Java stream中filter,map和forEach

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YYZZHC999/article/details/84727966

filter():

1,查找集合中的满足条件的第一个对象。

Optional<A> firstA= AList.stream() .filter(a -> "张三".equals(a.getUserName())) .findFirst();

2,如果想返回集合呢,可是使用这个

 List<A> firstA= AList.stream() .filter(a -> "张三".equals(a.getUserName())) .collect(Collectors.toList());

map():

3,抽取list对象中所有的id的集合

 List<Long> idList = AList.stream.map(A::getId).collect(Collectors.toList());

抽取Map中的value值:

 Map<Integer,Integer>data=new HashMap<>();
data.put(1, 10);
data.put(2, 20);
data.put(3, 30);
List<Integer> list = data.entrySet().stream().map(Entry::getValue).collect(Collectors.toList());
System.out.println(list);

结果:[10, 20, 30]
map就是把entry的value值映射出来,最后再用Collectors转成list

foreach():

抽取同上Map中的value值:

 map.forEach((k,v)->{
System.out.println(v);
});

结果:[10, 20, 30]

foreach可以与filter等结合使用

    list.forEach(item -> {
	//对item的逻辑操作
        if (weekIds.contains(item.getWeekId())) {
            String weekName = List.stream().filter(y -> y.getId().equals(item.getWeekId())).collect(Collectors.toList()).get(0).getDictionaryName();
            item.setWeekName(weekName);
        }
    });    

猜你喜欢

转载自blog.csdn.net/YYZZHC999/article/details/84727966
今日推荐