【Java 8 新特性】Java 8 Stream通过map()方法转化成新的类型流示例
文章目录1.在函数实例中`Stream map()`方法的使用2.使用`Stream Map()`将`Map`转换为`List`3.使用`Stream Map()`将`List`转换为另一个`List`4.`Stream mapToInt()`示例参考文献在本页中,我们将提供 java 8 Stream map()示例。它返回由给定函数处理的流实例。map()返回对象流,为了得到IntStream
·
文章目录
- 1.在函数实例中`Stream map()`方法的使用
- 2.使用`Stream Map()`将`Map`转换为`List`
- 3.使用`Stream Map()`将`List`转换为另一个`List`
- 4.`Stream mapToInt()`示例
- 参考文献
在本页中,我们将提供 java 8 Stream map()
示例。它返回由给定函数处理的流实例。
map()
返回对象流,为了得到IntStream
、LongStream
、DoubleStream
等原始数据类型的流,Java8 stream
分别提供了mapToInt()
、mapToLong()
和mapToDouble()
方法。
1.在函数实例中Stream map()
方法的使用
Stream.map()方法的语法如下
map(Function mapper)
我们需要将函数实例作为lambda
表达式传递。此方法返回具有给定函数处理结果的流实例。这是一个中间操作。
2.使用Stream Map()
将Map
转换为List
我们使用Stream Map()
作为中间操作将HashMap
转换为List
对象。
MapToList.java
package com.concretepage;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapToList {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put(111, "Lalkrishna");
map.put(154, "Atal");
map.put(30, "Narendra");
map.put(200, "Amit");
List list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
.map(e -> new User(e.getKey(), e.getValue())).collect(Collectors.toList());
list.forEach(l -> System.out.println("Id: "+ l.getId()+", Name: "+ l.getName()));
}
}
class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
输出
Id: 30, Name: Narendra
Id: 111, Name: Lalkrishna
Id: 154, Name: Atal
Id: 200, Name: Amit
3.使用Stream Map()
将List
转换为另一个List
我们使用Stream Map()
作为中间操作将List
转换为另一个List
对象。
ListToAnotherList.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ListToAnotherList {
public static void main(String[] args) {
Person p1 = new Person(1, "Mohan", "student");
Person p2 = new Person(2, "Sohan", "teacher");
Person p3 = new Person(3, "Dinesh", "student");
List personList = Arrays.asList(p1, p2, p3);
List stdList = personList.stream().filter(p -> p.getPersonType().equals("student"))
.map(p -> new Student(p.getId(), p.getName()))
.collect(Collectors.toList());
stdList.forEach(e -> System.out.println("Id:"+ e.getId()+ ", Name: "+ e.getName()));
}
}
class Person {
private int id;
private String name;
private String personType;
public Person(int id, String name, String personType) {
this.id = id;
this.name = name;
this.personType = personType;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPersonType() {
return personType;
}
}
class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
输出
Id:1, Name: Mohan
Id:3, Name: Dinesh
4.Stream mapToInt()
示例
这里我们提供mapToInt()
的示例,mapToLong()
和mapToDouble()
的方法与之相同。
MapToIntDemo.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
public class MapToIntDemo {
public static void main(String[] args) {
Employee e1 = new Employee(1, 20);
Employee e2 = new Employee(2, 15);
Employee e3 = new Employee(3, 30);
List list = Arrays.asList(e1, e2, e3);
int sum = list.stream().mapToInt(e -> e.getAge()).sum();
System.out.println("Sum: "+ sum);
}
}
class Employee {
private int id;
private int age;
public Employee(int id, int age) {
this.id = id;
this.age = age;
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
}
输出
Sum: 65
参考文献
更多推荐
已为社区贡献4条内容
所有评论(0)