如何在Lambda过滤器中使用多个声明?

埃斯特万·林孔

我对Lambdas来说还很陌生,我正尝试通过以下方式使用它,但它似乎没有用。在其中一个是条件的情况下,是否可以有多个声明

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);
    }
});

但是我想知道是否有可能以我尝试的方式或相对类似的方式进行?

布莱恩

如果使用花括号,则需要返回一个值。期望布尔值返回。它只是假设没有括号。

return cal.get(Calendar.YEAR) == year;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章