我有一个包含两个String
字段的对象列表,例如
Name1, Active
Name2, InActive
Name3, InActive
Name4, Active
我想要一个
Map<Boolean, List<String>>
其中Active = true且InActive = false。
我试过
active = dualFields.stream().collect(
Collectors.groupingBy(
x -> StringUtils.equals(x.getPropertyValue(), "Active")));
但我收到了
Map<Boolean, List<DualField>>
答案 0 :(得分:7)
首先,您可以使用groupingBy
,这是Predicate
的特例(您将mapping
分组为两组)。您可以使用List<String>
将对象映射到所需的字符串。
我假设您希望getPropertyValue()
包含第二个属性的值(即不是Map<Boolean,List<String>> map =
dualFields.stream()
.collect(Collectors.partitioningBy(x -> StringUtils.equals(x.getPropertyValue(), "Active"),
Collectors.mapping(DualField::getSecondPropertyValue,
Collectors.toList()));
,其中包含“Active”或“InActive”):
assert(x>10);
答案 1 :(得分:2)
如果您希望List<String>
由propertyValue
组成,而不是:
active = dualFields.stream().collect(
Collectors.groupingBy(
x -> StringUtils.equals(x.getPropertyValue(), "Active"),
Collectors.mapping(DualField::getPropertyValue, Collectors.toList());
));