如何将集合转换为映射,并在java 8中将集合作为值?

2022-09-03 14:33:50

我有以下类:

class A {
   private String id;
   private String name;
   private String systemid;
}

我得到了一组A,并希望将其转换为一个映射,其中键是系统ID,值设置为A。Map<String, Set<A>

似乎不知道该怎么做.直到这里,但身份显然不对

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

你能帮忙吗?


答案 1

您可以使用代替 :groupingBytoMap

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

答案 2

我的2¢:你可以用它来做,但它稍微冗长一些:Collectors.toMap

      yourSet
      .stream()
            .collect(Collectors.toMap(
                    A::getSystemId,
                    a -> {
                        Set<A> set = new HashSet<>();
                        set.add(a);
                        return set;
                    }, (left, right) -> {
                        left.addAll(right);
                        return left;
                    }));

推荐