steam流
Java求差集
摒弃掉数据库操作,使用内存去完成IO完成的事情。
/**
* 差集(基于java8新特性)优化解法2
* 求List1中有的但是List2中没有的元素
*/
private List<PSIP01> minus(List<PSIP01> list1, List<PSIP11> list2) {
return list1.stream()
.filter(a -> list2.stream()
.allMatch(
b -> !a.getProdPlanType().equals(b.getDataResource())
&& !a.getProdUnitCode().equals(b.getProdUnitCode())
)).collect(Collectors.toList());
}
使用stream流完成去重操作
仅用作笔记记录
List<MM0001> collect1 = mm0001List.stream()
.filter(distinctByKey(MM0001::getMatNo))
.collect(Collectors.toList());
private <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
根据某个字段在集合中查找数据
如果存在值,则返回值,不存在就返回null。
list.stream().filter(k ->
k.getPlanNo().equals(mmhr31.getRollPlanNo())
).findAny().orElse(null);
根据某个字段进行分组
list.stream().collect(Collectors.groupingBy(MMUB19::getInOutFlag));