我设置了firstSet和Set secondSet。 我需要获得最终的Set beans;
Set<Bean> beans = new HashSet<Bean>();
for(BigDecimal element: firstSet){
if(secondSet.contains(element)){
beans.add(new BeanBuilder().id(element).isNew(Boolean.TRUE).build());
} else {
beans.add(new BeanBuilder().id(element).isNew(Boolean.FALSE).build());
}
}
如何使用lambda-expression编写它? (需要解析两个流)。
Set<BEBean> arr = firstSet
.stream()
.flatMap( if(secondSet::contains) {
new BeanBuilder().id(x).isNew(Boolean.TRUE).build();
} else {
new BEBuilder().id(x).name(Boolean.FALSE).build();
})
.collect(Collectors.toSet());
答案 0 :(得分:4)
完全避免代码重复:
Set<BEBean> beans = availableResources
.stream()
.map(e -> new BeanBuilder().id(e).isNew(secondSet.contains(e)).build())
.collect(Collectors.toSet());
请注意,您也可以避免循环中的代码重复:
Set<Bean> beans = new HashSet<Bean>();
for(BigDecimal element: firstSet)
beans.add(new BeanBuilder().id(element).isNew(secondSet.contains(element)).build());