我有一个下面的代码,这是预期的工作,我想优化它,可能如果使用流的方法。
List<List<String>> colorsList = List.of(
List.of("red","maroon"),
List.of("blue, skyblue"),
List.of("pink"));
int var1 = 5;
List<String> listReturn = new ArrayList<>();
for(List<String> innerList: colorsList){
if(var1 == 5){
if(innerList.contains("blue")){
listReturn.addAll(innerList);
}
}else if(var1 == 10){
if(innerList.contains("pink") || innerList.contains("red")){
listReturn.addAll(innerList);
}
}
}
}
基本上我返回一个单一的列表listReturn组合1或多个列表从原始colorsList的基础上的条件。有没有一个更好的和优化的方式来写上面?
3条答案
按热度按时间epfja78i1#
你可以参考下面的代码,你还应该检查colorsList是否为null
j13ufse22#
如果我想写这段代码,我将首先创建一个colorsList流,然后过滤它。如果筛选条件为true,则该项将添加到输出中。接下来,我们使用flatMap()将嵌套列表扁平化为单个字符串流。
kqlmhetl3#
你可以分解出 predicate ,这样你就不必重复检查和过滤列表的代码: