sta*_*kyi 6 java java-8 java-stream
我有这些课
class LivingOrganism
{
List<Domain> listOfDomain;
}
class Domain
{
List<Species> listOfSpecies;
}
class Species
{
List<Color> listOfColor;
}
class Color
{
String color;
}
Run Code Online (Sandbox Code Playgroud)
从上到下,在我到达颜色之前,它不会有任何重复的条目。因此,某些物种即使在另一个域中也可以具有相同的颜色。一个单一的物种可以有不同的颜色。
给定一个父 LivingOrganism,我想用某种颜色过滤一个 listOfDomain。
我是在经典的嵌套 for 循环中完成的,但是使用 4 个嵌套 for,代码看起来并不漂亮。我试图使用 java 8 flatmap 和 filter 来获得一些更优雅的代码,但我花了几个小时没有成功。
假设我想得到List<Species>可以是蓝色的或List<Domain>所有Species可以是蓝色的。我该如何进行?
任何帮助,将不胜感激
尝试这个。
List<Domain> result = livingOrganism.listOfDomain.stream()
.filter(d -> d.listOfSpecies.stream()
.flatMap(s -> s.listOfColor.stream())
.anyMatch(c -> c.equals("blue")))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)