现在我正在使用一个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)这样的复合逻辑表达式

最佳答案

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

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


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

Example

关于java - 流过滤器java中的if-else,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36524745/

10-10 16:43