Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将对象列表转换为另一个hashmap中的hashmap_Java_Java Stream - Fatal编程技术网

Java:将对象列表转换为另一个hashmap中的hashmap

Java:将对象列表转换为另一个hashmap中的hashmap,java,java-stream,Java,Java Stream,我有一个要转换为哈希映射的对象列表。是否可以创建此类型的哈希映射map您可以分组两次,其中“关系”分组收集器位于“计划”分组收集器的下游: Map<String, Map<String, List<myObject>> myHash = objectList .stream() .collect(Collectors.groupingBy(myObject::getPlan, Collectors.groupingB

我有一个要转换为哈希映射的对象列表。是否可以创建此类型的哈希映射
map您可以分组两次,其中“关系”分组收集器位于“计划”分组收集器的下游:

Map<String, Map<String, List<myObject>> myHash = objectList
    .stream()
    .collect(Collectors.groupingBy(myObject::getPlan, 
                Collectors.groupingBy(myObject::getRelationship)));

map只是一个提示:Java是一种面向对象的语言,因此我建议您尽量避免使用容器中的容器,并创建自己的对象来表示您想要的内容。这将导致代码更易于阅读和理解,因为您的对象将有一个名称。@如果只是在只返回布尔值的函数中一次性使用,则仍然是这种情况吗?唯一需要做的就是通过一些for循环来检查无效性。该对象将只使用一次。为什么不使用两个不同的HashMap,使用两个不同的键呢。然后,您可以检查所有对象,这些对象在一个HashMap中的键为“12”,在第二个HashMap中的键为“a”。@NomadMaker只是因为我需要相互比较对象的子集,所以所有具有相同计划和关系的对象都将被比较。这样,它只是一个嵌套的for循环,我不必一直对照列表检查是否有正确的对象。@BStill:我个人是独立于对象的使用频率来做这件事的。我的目标是让其他开发人员(他们不知道我的想法)容易理解代码。实现这一点的最简单方法(源代码中没有大量注释)是给“things”指定有意义的名称(有时这很难)。如果要限制对象,可以为此使用静态嵌套类。所以其他开发人员会立即知道这个类/对象只有一个用途。但我认为我们使用的是一种面向对象的语言,具有很强的典型性。让我们用这个:-)
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)));