我有一个要转换为散列映射的对象列表。是否可以创建这种类型的 HashMap Map<String, Map<String, List<Object>>
?
这样做的原因是我需要根据对象中的某些属性对它们进行排序,以便以后可以遍历它。所以下面是对象当前的样子的 Json:
[
object1: {plan: "11", relationship: "A", etc...},
object2: {plan: "12", relationship: "A", etc...},
object3: {plan: "11", relationship: "B", etc...},
]
我正在尝试使用 Collectors
把它变成HashMap
但我对第二个 HashMap 感到困惑,我似乎无法将关系列表放入 Map
.
Map<String, Map<String, List<myObject>> myHash = objectList
.stream()
.collect(Collectors.toMap(myObject::plan,
a -> a.stream().collect(Collectors.groupingBy(myObject::relationship))));
我想得到的是这样的
[
{
key: "11",
value: [
{key: "A", value: [ object1 ]},
{key: "B", value: [ object3 ]}
]
},
{
key: "12",
value: [{key: "A", value: [ object2 ]}]
}
]
最佳答案
您可以分组两次,“关系”分组收集器是“计划”分组收集器的下游:
Map<String, Map<String, List<myObject>> myHash = objectList
.stream()
.collect(Collectors.groupingBy(myObject::getPlan,
Collectors.groupingBy(myObject::getRelationship)));
这将使每个“计划”组下的“关系”组。
关于Java:将对象列表转换为另一个 HashMap 中的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61264871/