在 java 8 中,根据一些过滤条件收集 emp 对象。
在主类中:
List<Emp> empList = Arrays.asList(
new Emp("aaa", language1),
new Emp("cc", language2),
new Emp("bb", language3),
new Emp("dd", language3)
);
empList.stream()
.flatMap(s->s.getLanguage().stream())
.filter(s->s.equals("java"))
.forEach(System.out::println); //Here just i am printing.
其实我需要收集new List<EMP>
.
如何收集所有语言为“java”的 emp 对象。我该怎么做?
最佳答案
你不应该使用 flatMap
如果你想 Collection Emp
对象,因为它会将每个元素更改为其他元素,并且很难将它们映射回来。
您应该将所有逻辑放在 filter
中: "如果 Emp
包含 getLanguage
,则保留 "java"
对象。
empList.stream()
.filter(x->x.getLanguage().contains("java"))
.collect(Collectors.toList());
关于java - 根据条件过滤并收集对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787247/