java - 如何获取 Map.values 作为 Set 而不是 Collection?

标签 java dictionary collections

我有一张 map Map<String, SomeType>其中 SomeType 的每个实例按名称添加,如 map.put(object.getName(), object) 。最终map.values()中没有重复项.

现在,我想要一个 Set<SomeType>从这张 map 中无需制作像 new HashSet<>(map.values()) 这样的副本.

这可能吗,只有标准库才优先?

最佳答案

您已经知道如何使用 new HashSet<>(map.values()) 来做到这一点。您无法直接获取一组值,因为这些值可能包含重复项。即使在您的特定 Map 中没有重复值,在通用 Map 中也可能存在重复值。

您可以使用 Java 8 Streams 执行某些操作,但与显式实例化 Set 相比,它没有任何优势。

Set<SomeType> values = map.values().stream().collect(Collectors.toSet());

关于java - 如何获取 Map.values 作为 Set 而不是 Collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29864709/

相关文章:

java - JAXB 2.x 与 MOXy (Eclipselink 2.1.2) : persisting XHTML as element value

Java Bioinformatics - 获取字符串中多个特定单词的所有索引

ios - Mapbox 对矢量瓦片有什么支持?

java - 将数组中的值放入 map

用于集合的 WPF 绑定(bind)转换器

java - 区分浏览器选项卡关闭和刷新(以检测应用程序的多个实例)

java - 具有与之关联的方法的静态对象是否应该大写?

python - 从文件中搜索字符串 - python

java - 是否有任何 java 集合包装器/集合在多线程访问时失败?

java - 当这些是对象时,如何根据映射的值而不是键对映射进行排序?