目录
前言
该文承接这篇文章进行续写:JavaSE-Stream流的终结方法_forEach_count_toArray_collect-CSDN博客
收集到List集合
需求:把所有的男性收集起来
public class StreamDemo15 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌-男-16","周芷若-女-20","赵敏-女-18","张强-男-30"
,"张三丰-男-24","张翠山-男-19","王二狗-男-40","谢广坤-男-37");
List<String> newList1 = list.stream()
.filter(s->"男".equals(s.split("-")[1]))
.collect(Collectors.toList());
System.out.println(newList1);
}
}
收集到Set集合
需求:把所有的男性收集起来
public class StreamDemo16 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌-男-16","周芷若-女-20","赵敏-女-18","张强-男-30"
,"张三丰-男-24","张翠山-男-19","王二狗-男-40","谢广坤-男-37");
Set<String> newSet1 = list.stream()
.filter(s->"男".equals(s.split("-")[1]))
.collect(Collectors.toSet());
System.out.println(newSet1);
}
}
收集到Map集合
需求:把所有男性收集起来。其中姓名作为键,年龄作为值
一般写法
public class StreamDemo17 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌-男-16","周芷若-女-20","赵敏-女-18","张强-男-30"
,"张三丰-男-24","张翠山-男-19","王二狗-男-40","谢广坤-男-37");
Map<String, Integer> newMap1 = list.stream()
.filter(s -> "男".equals(s.split("-")[1]))
.collect(Collectors.toMap(new Function<String, String>() {
@Override
public String apply(String s) {
return s.split("-")[0];
}
}, new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(s.split("-")[2]);
}
}));
System.out.println(newMap1);
}
}
关于toMap中的参数
Lambda表达式的写法
因为toMap接收的参数是函数式接口,所以可以使用Lambda表达式进行简化。如果对Lambda表达式不太清楚,可以阅读这篇文章:JavaSE-Lambda表达式-CSDN博客
public class StreamDemo17 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌-男-16","周芷若-女-20","赵敏-女-18","张强-男-30"
,"张三丰-男-24","张翠山-男-19","王二狗-男-40","谢广坤-男-37");
Map<String, Integer> newMap1 = list.stream()
.filter(s -> "男".equals(s.split("-")[1]))
.collect(Collectors.toMap(s-> s.split("-")[0]
, s ->Integer.parseInt(s.split("-")[2])));
System.out.println(newMap1);
}
}
打印结果:
注意点
如果我们要收集到Map集合中,键不能重复,否则会报错