Lea*_*oop 4 java java-8 slamdata
在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.
Run Code Online (Sandbox Code Playgroud)
其实我需要收集 new List<EMP>
如何收集所有拥有语言"java"的emp对象.我能怎么做?
flatMap如果您想最终收集Emp对象,则不应该使用它,因为它会将每个元素更改为其他元素,并且很难将它们映射回来.
您应该将所有逻辑放在filter:"保留Emp对象(如果getLanguage包含"java"").
empList.stream()
.filter(x->x.getLanguage().contains("java"))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)