现在我正在使用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)
答案 0 :(得分:0)
看起来Stream过滤器可以处理复合逻辑表达式。所以我转换了if else就像这样。
filteredList = classABCList.stream()
.filter(abc ->(abc.getName() == "ABC" && abc.before(timestamp1))
|| abc.before(timestamp2)
).collect(toList());
这是RadioDef建议的一个ideone示例(感谢您的示例!)