使用Java8流API对嵌套列表进行筛选
我无法将下面的代码片段转换为Java8流格式
List<String> titles = Arrays.asList("First Name", "Last Name");
for (FirstClass first : firstClassList) {
for (SecondClass second : first.getSecondClassList()) {
for (ThirdClass third : second.getThirdClassList()) {
if(!titles.contains(third.getField())) {
second.getThirdClassList().remove(third);
}
}
}
}
我将三级嵌套列表对象与字段的输入列表进行比较。如果字段不匹配,那么我将从原始列表中删除它们。 如何使用Java8语法实现这一点
编辑:我想返回头等舱的名单
# 1 楼答案
我认为在这种情况下,streams不会给你带来任何好处。你所要做的就是迭代嵌套列表,增强的for循环或^{} 更简单
改进可以来自使用^{} 修改列表,也可能来自将拒绝逻辑移出循环:
# 2 楼答案
首先,可以使用^{} 和^{} 得到一个包含} ,它将从与给定条件匹配的集合中删除所有项:
ThirdClass
的Stream
的List
。要删除与条件匹配的项,可以使用^{这将修改原始列表,就像您在示例中所做的那样。然后可以使用
firstClassList
作为进一步处理的结果除此之外,我建议您在标题中使用^{} 而不是
List<String>
,因为它的时间复杂度是O(1)而不是O(n):