我有以下课程:
@Getter
public class SomeClass implements Serializable {
private LocalDate date;
private String smth;
List<PairKeyValue> quotaParams;
}
类 PairKeyValue 只是:
@Getter
public class PairKeyValue implements Serializable {
private String key;
private String value;
}
我想做以下事情:
1) 检查 inSomeClass's日期是否等于 sysdate 然后检查 in 下key="somekey"的值list<PairKeyValue>是否等于 1 ( somekey = 1) 然后将其留在列表中。
2) 检查 in SomeClass's dateNOT 是否等于sysdate然后检查 in 下key="somekey"的值List<PairKeyValue>是否等于 0 ( somekey = 0) 然后将其留在列表中。
3)并忽略其他值。
所以最后我需要一个仅包含当前值的过滤列表SomeClass。
我有我的认识,但我不喜欢它不只使用流 API:
availableQuotes = ArrayList();
if (CollectionUtils.isNotEmpty(availableQuotes)) {
availableQuotes = availableQuotes
.stream()
.filter(this::checkDate).collect(toList());
}
private boolean checkDate (SomeClass someClass){
if (someClass.getDate().equals(LocalDate.now())) {
return checkDuration(someClass, "0");
} else {
return checkDuration(someClass, "1");
}
}
private boolean checkDuration (SomeClass someClass, String param){
List<PairKeyValue> quotaParams = someClass.getPairKeyValues().stream()
.filter(spKeyValue -> spKeyValue.getKey().equals("duration"))
.filter(spKeyValue -> spKeyValue.getValue().equals(param))
.collect(toList());
return (CollectionUtils.isNotEmpty(quotaParams));
}
我知道它看起来很糟糕,而且我知道它可以更具可读性,所以请帮忙。
大话西游666
相关分类