Java 使用Lambda消除if
试图学习一些关于lambda实用用法的新知识 我有一个问题: 我有一个对象,里面有一些其他对象的列表。这些对象具有MyEnum字段。我希望遍历这些对象,获取该枚举的状态,然后根据该状态,如果满足条件,我希望将该对象添加到列表1中。如果不是,我想将该对象添加到列表2中 基本上,通过特殊条件将一个列表拆分为两个不同的列表 我已经通过两种方法实现了这一点,一种是古老的,每种都是经典的,第二种是Java8Lambdas,我也在努力学习 我的两个代码:Java 使用Lambda消除if,java,lambda,Java,Lambda,试图学习一些关于lambda实用用法的新知识 我有一个问题: 我有一个对象,里面有一些其他对象的列表。这些对象具有MyEnum字段。我希望遍历这些对象,获取该枚举的状态,然后根据该状态,如果满足条件,我希望将该对象添加到列表1中。如果不是,我想将该对象添加到列表2中 基本上,通过特殊条件将一个列表拆分为两个不同的列表 我已经通过两种方法实现了这一点,一种是古老的,每种都是经典的,第二种是Java8Lambdas,我也在努力学习 我的两个代码: void groupObjects() {
void groupObjects() {
for (ListObject listObject : object.getList()) {
if (MyEnum.STATUS.equals(listObject.getStatus())) {
otherList.add(listObject);
} else {
someOtherList.add(listObject);
}
}
}
void groupObjects() {
object.getList().parallelStream()
.filter(listObject-> MyEnum.STATUS.equals(listObject.getStatus()))
.forEach(listObject-> otherList.add(listObject));
object.getList().parallelStream()
.filter(listObject-> !MyEnum.STATUS.equals(listObject.getStatus()))
.forEach(listObject-> someOtherList.add(listObject));
}
以及在我脑海中提出的问题:
我已经读过关于
.parallelStream()
部分的内容,所以现在不要介意。这可以通过使用partitionby
Map<Boolean, List<SomeClass>> partitioned = object.getList().stream()
.collect(partitioningBy(listObject->MyEnum.STATUS.equals(listObject.getStatus()))
Map partitioned=object.getList().stream()
.collect(分区依据(listObject->MyEnum.STATUS.equals(listObject.getStatus()))
Where
partitioned.get(true)
将为您提供一个包含状态为MyEnum.status
和partitioned.get(false)
的对象的列表。get(false)partitioningBy()在哪里定义?这是静态导入吗?从java.util.stream.Collectors
静态导入。三元表达式(MyEnum.STATUS==object.getStatus)?otherList:someOtherList
可能是最简单的方法。