java - 使用哪个 map /集合?

标签 java collections hash

在下面的键/值列表中,“val3”对于不同的键是重复的。哪种 map 最适合此类列表。

我希望“val3”仅存储一次,并且有多个键指向它。

key1---->val1
key2---->val3
key3---->val3
key5---->val5
key6---->val3
key7---->val6
key8---->val3
key9---->val3

最佳答案

任何 Map 实现都可以。每个 Java 集合只保存引用,而不是实际对象,因此如果将同一个对象多次放入映射中,所有值都将指向同一个对象。换句话说,通过 key2 查找对 val3 所做的更改将在通过任何其他指向 val3 的键进行查找时反射(reflect)出来。

考虑简化的示例:

VeryLarge v = new VeryLarge();
Map<Integer, VeryLarge> map = new HashMap<>();
map.put(1, v);
map.put(2, v);
map.put(3, v);

单个 VeryLarge 实例由所有 123 键引用。

关于java - 使用哪个 map /集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175704/

相关文章:

java - 在 Hazelcast Jet 处理器上使用 Hazelcast IMap

java - 想要在 JTable 中的每条记录后插入空行

Java Spring MVC 如何获取这个设定值?

collections - 迭代时无法分配给不可变的索引内容

Ruby:如何找到散列中最大值的键?

algorithm - 什么是好的哈希函数?

java - 构造函数注入(inject)不适用于 @Statless bean 中的限定符

java - 如何在列表迭代器中查找特定项目

android - ORMLite 和惰性集合的问题

c# - 针对 Active Directory 验证 NT 和 LM 哈希