1. 程式人生 > >Java stream中filter,map和forEach

Java stream中filter,map和forEach

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);
        }
    });