gpt4 book ai didi

java - 如何在默认情况下使用 lambdaj 组

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:28 27 4
gpt4 key购买 nike

在这种情况下,我根据条件将列表过滤为多个列表。

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)。这里有过滤器的代码:

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);

希望能帮到你。

关于java - 如何在默认情况下使用 lambdaj 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22542428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com