如何将lambda表达式转换为普通代码?

时间:2019-06-06 11:18:38

标签: java for-loop java-stream

我正在用Java 1.8编写,现在我需要降级到1.6。 我在以正常方式编写此代码时遇到问题。有什么建议么 ?

return Stream.of(field.getText().split(","))
             .map(String::trim)
         **.filter(s -> !s.isEmpty())**
             .map(Integer::valueOf)
             .collect(Collectors.toSet());

非常感谢您的帮助。

那是我尝试过的:

if(!splitted[i].isEmpty()) {
   set.add(Integer.valueOf(splitted[i]));
}  

2 个答案:

答案 0 :(得分:5)

Set<Integer> results = new HashSet<>();
for (String part : field.getText().split(",")) {
    String trimmed = part.trim();
    if (trimmed.isEmpty()) continue;
    results.add(Integer.valueOf(trimmed));
}

答案 1 :(得分:3)

您的代码执行以下操作:

  1. 沿“,”分隔字段文本
  2. 分别对它们调用trim()
  3. 仅适用于所有不为空的商品
  4. 将此字符串解析为整数
  5. 将它们放入套装

可以这样做:

EDIT :for-each更好,并且可以从Java 1.5开始使用

Set<Integer> set = new HashSet<>();
for(String split : field.getText().split(",")) {
    split = split.trim();
    if(!split.isEmpty()) {
         set.add(Integer.valueOf(split));
    }
}