Bic*_*ick 6 java java-8 java-stream
我有一个包含两个String
字段的对象列表
Name1, Active
Name2, InActive
Name3, InActive
Name4, Active
Run Code Online (Sandbox Code Playgroud)
我想要一个
Map<Boolean, List<String>>
Run Code Online (Sandbox Code Playgroud)
其中Active = true且InActive = false.
我试过了
active = dualFields.stream().collect(
Collectors.groupingBy(
x -> StringUtils.equals(x.getPropertyValue(), "Active")));
Run Code Online (Sandbox Code Playgroud)
但我收到了
Map<Boolean, List<DualField>>
Run Code Online (Sandbox Code Playgroud)
首先,您可以使用partitioningBy
,这是一个特殊情况groupingBy
(您将其Predicate
分为两组).您可以将对象映射到所需的字符串mapping
.
我假设你想要List<String>
包含第二个属性的值(即不getPropertyValue()
包含"Active"或"InActive"):
Map<Boolean,List<String>> map =
dualFields.stream()
.collect(Collectors.partitioningBy(x -> StringUtils.equals(x.getPropertyValue(), "Active"),
Collectors.mapping(DualField::getSecondPropertyValue,
Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
947 次 |
最近记录: |