在下面的键/值列表中,“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
实例由所有 1
、2
和 3
键引用。
关于java - 使用哪个 map /集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175704/