我對Lambdas很新,我試圖按照以下方式使用它,但似乎不起作用。是否可以有多個聲明,其中ONE是這些條件?如何在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);
}
});
但我想知道是否有可能做到這一點我想的方式,或東西比較相似?