Java stream中filter,map和forEach
阿新 • • 發佈:2018-12-03
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); } });