我对 Lambda 还很陌生,我正在尝试按以下方式使用它,但它似乎不起作用。是否可以有多个声明,其中其中一个是条件?
ArrayList<Message> msgs = new ArrayList<>(ms.values());
Calendar cal = Calendar.getInstance();
msgs.stream().filter( m -> {
cal.setTime(m.getCreated());
cal.get(Calendar.YEAR) == year
});
据我了解,它的工作原理如下:
collection.stream().filter(x -> 1 == x);
但是由于我需要设置Date
并将其与Calendar
一起使用来获取年份,因此我必须在两个声明中执行此操作。
我知道这有效:
msgs.forEach(m -> {
cal.setTime(m.getCreated());
if (cal.get(Calendar.YEAR) != year) {
msgs.remove(m);
}
});
但我想知道是否可以按照我尝试的方式或相对类似的方式进行操作?
最佳答案
如果使用花括号,则需要返回一个值。它期待一个 bool 返回值。它只是假设没有大括号。
return cal.get(Calendar.YEAR) == 年;
关于lambda - 如何在 lambda 过滤器中使用多个声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824581/