我正在尝试使用一些新生成的变量和if语句使用Java流和lambda表达式将旧样式的for循环转换为新样式。
for (MyClass a : list_1) {
if (a.myMethod() != null) {
List<Integer> list_2 = myMap.get(/*some code*/);
if (list_2 == null) {
list_2 = new ArrayList<>();
myMap.put(/*some code*/);
}
list_2.add(/*some code*/);
}
}
答案 0 :(得分:2)
让我们仔细看看各个部分。
首先,您需要一个流:
list_1.stream()
接下来,您有一个if
。大多数情况下,可以将其转换为filter
:
.filter(a -> a.myMethod() != null)
然后,您想对数据做一些事情。您可以为此使用forEach:
list_1.stream()
.filter(a -> a.myMethod() != null)
.forEach(a -> {
// only put list in if absent
myMap.putIfAbsent(/* your stuff */);
myMap.get(/* some code */).add(/* your stuff */);
});