如何使用流和lambda转换包含简单for循环的java代码?

时间:2019-07-12 11:05:19

标签: java foreach java-8 java-stream

我正在尝试使用一些新生成的变量和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*/);
      }
    }

1 个答案:

答案 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 */);
  });