簡體   English   中英

如何在默認情況下使用lambdaj組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM