我正在尝试将具有树集的列表的所有值树集元素放入linkedHashSet
中。该树集列表由values()
的{{1}}方法返回。代码如下:
TreeMap<String, TreeSet>
这应该返回一个Map<String, TreeSet> sortedByMonthAndVarietyNameMap = new HashMap<>();
sortedByMonthAndVarietyNameMap.values().stream().flatMap(monthList -> monthList.stream()).collect(Collectors.toCollection(LinkedHashSet::new));
,其中包含被映射树集的所有元素。但实际上,它返回类型为LinkedHashSet
的对象。
为什么会这样?有人可以解释我在做什么错吗?
答案 0 :(得分:4)
TreeSet没有完全键入:
Map<String, TreeSet<Integer>> sortedByMonthAndVarietyNameMap = new HashMap<>();
LinkedHashSet<Integer> result = sortedByMonthAndVarietyNameMap.values().stream()
.flatMap(monthList -> monthList.stream())
.collect(Collectors.toCollection(LinkedHashSet::new));
答案 1 :(得分:0)
您已经提供了LinkedHashSet的构造方法参考,而没有指定类型。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.13
答案 2 :(得分:0)
这是您想要的吗?
LinkedHashSet<TreeSet> collect = sortedByMonthAndVarietyNameMap
.values()
.stream()
.flatMap(Stream::of)
.collect(Collectors.toCollection(LinkedHashSet::new));
P.S。这种数据转换看起来很奇怪。也许您可以更详细地描述您的情况?