[英]How can I use lambdaj groups for default case scenario
在這種情況下,我將根據條件將列表篩選成多個列表。
for(SomeObj someObj : someObjs) {
if(StringUtils.equalsIgnoreCase(someObj.getIndicator(), "Y")) {
beansWithY.add(someObj);
} else if(StringUtils.equalsIgnoreCase(someObj.getIndicator(), "N")) {
beansWithN.add(someObj);
} else {
beansWithIndNotValid.add(someObj);
}
}
這看起來很簡單,但是我想知道使用Lambdaj是否有可能。
我遇到了分組問題,可以像下面那樣使用它,但是,它似乎沒有涵蓋默認情況。
Group<SomeObj> group = group(listOfSomeObjs, by(on(SomeObj.class).getIndicator()));
之后,結果將為:
Y group
N group
null group
a group for each and every invalid indicator ( like A, B, C...)
我想知道是否可以像上面提到的for循環那樣工作,如果它是Y-轉到一個列表/組,N-轉到另一個列表/組,其他所有都到一個組。
您無法使用“分組”功能來實現此目的。 您在問題中添加的分組方法是解決所需內容的正確方法,但您將無法涵蓋默認情況。
如果要使用LambdaJ進行操作,則必須組合filter
(或select
)。 這里有filter的代碼:
List<SomeObj> yList = filter(having(on(SomeObj.class).getIndicator(), equalTo("Y")), listOfSomeObjs);
List<SomeObj> nList = filter(having(on(SomeObj.class).getIndicator(), equalTo("N")), listOfSomeObjs);
List<SomeObj> dList = filter(having(on(SomeObj.class).getIndicator(), not(equalTo("Y"))).and(having(on(SomeObj.class).getIndicator(), not(equalTo("N")))), listOfSomeObjs);
Map<String, List<SomeObj>> map = new HashMap<>();
map.put("Y", yList);
map.put("N", nList);
map.put("D", dList);
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.