准备
创建一个list
List<Employee> emps = Arrays.asList(
new Employee(1, "赵一", 9, 10),
new Employee(2, "钱一", 8, 11),
new Employee(3, "孙一", 8, 12),
new Employee(4, "李一", 2, 13),
new Employee(5, "周一", 3, 14),
new Employee(6, "吴一", 4, 15),
new Employee(7, "郑一", 3, 16)
);
需求
遍历list中存放的对象,并将对象中的姓名取出后按逗号拼接。
思路及实现
1.先把所有对象的姓名拿出来
//创建一个流,并使用steam的中间操作map
Stream<String> stringStream = emps.stream().map(x -> x.getName());
map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
文字读起来比较难懂,伪代码:
public Stream<String> weiMap(){
Stream<String> list = new ArrayList<>();
for (int i = 0; i < emps.size(); i++) {
Employee employee = emps.get(i).getName();
list.add(employee.getName());
}
return list;
}
2.从新流中把所有的值取出后并用逗号拼接
String collect = stringStream.collect(Collectors.joining(","));
collect:将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法。
3.打印结果
System.out.println(collect);
//赵一,钱一,孙一,李一,周一,吴一,郑一