如何将set转换为map,并将set设置为java 8中的值?

use*_*966 12 java java-8 java-stream

我有以下课程:

class A {
   private String id;
   private String name;
   private String systemid;
}
Run Code Online (Sandbox Code Playgroud)

我得到一组A并希望将其转换为密钥是系统ID的映射,并且值设置为A.(Map<String, Set<A>)可以有多个具有相同systemid的A实例.

似乎无法弄清楚该怎么做..直到这里,但身份显然是不对的

Map<String, Set<A>> sysUidToAMap = mySet.stream().collect(Collectors.toMap(A::getSystemID, Function.identity()));
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗?

Era*_*ran 8

您可以使用groupingBy而不是toMap:

Map<String, Set<A>> sysUidToAMap =  
    mySet.stream()
         .collect(Collectors.groupingBy(A::getSystemID,
                                        Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)