if-else在流过滤器java中

时间:2016-04-10 01:32:16

标签: java java-stream

现在我正在使用forloop来过滤像这样的列表

LinkedList < classABC > filteredList = new LinkedList < > ();
for (ClassABC classABC: classABCList) {
 if (classABC.getName() == "ABC" && classABC.before(timestamp1)) {
  filteredList.add(classABC)
 } else if (classABC.before(timestamp2)) {
  filteredList.add(classABC)
 }
}
return filteredList

我想知道我是否可以使用stream()。filter()来做同样的事情。我尝试使用多个逻辑表达式进行过滤,但无法使其适用于复合逻辑表达式,如(a && b) || (c)

1 个答案:

答案 0 :(得分:0)

看起来Stream过滤器可以处理复合逻辑表达式。所以我转换了if else就像这样。

filteredList = classABCList.stream()
             .filter(abc ->(abc.getName() == "ABC" && abc.before(timestamp1))
                    || abc.before(timestamp2)
             ).collect(toList());

这是RadioDef建议的一个ideone示例(感谢您的示例!)

Example