나는 술어에 따라 컬렉션을 필터링하려고 :collections.filter가 잘못 될 수 있습니까?
private void filterExpiredOffers() {
mOffersList = Lists.newArrayList(Collections2.filter(
mOffersList, new Predicate<Offer>() {
@Override
public boolean apply(Offer offer) {
return mUnlockExpirationCalculator
.isUnlockValid(offer);
}
}));
}
과 :
public boolean isUnlockValid(Offer offer) {
return ((offer.unlockExpirationDate == null) || (System
.currentTimeMillis() < offer.unlockExpirationDate.getTime()));
}
내가 제안
아직 결과로 "거짓"을 얻었다 참조, 나는 나중에 ArrayList에서 볼 수 있습니다.
필터를 잘못하고 있습니까? 당신이 System.currentTimeMillis()
을 사용할 때 완벽하게 가능 보인다 - 가장 가능성이 보인다 무엇
(기본적으로, 'Collection2.filter'는 잘못 될 수 없습니다.) 구현은 매우 간단하며'Collection'을 반복 할 때'predicate.apply'가'true를 반환하는 요소 만 반환합니다 ') – ColinD