它是这样工作的:
Set<Integer> nums = numMap.get(id);
nums.add(new Integer(0));
// now do i have to:
numMap.put(id,nums)?
// or is it already stored?
问候 && tia noircc
它是这样工作的:
Set<Integer> nums = numMap.get(id);
nums.add(new Integer(0));
// now do i have to:
numMap.put(id,nums)?
// or is it already stored?
问候 && tia noircc
您不必将其放回原处,除非您对其进行深度克隆。一切都基于 Java 中的引用。
你总是可以通过编写一个简单的程序来测试它。
public static void main(String... args) {
Map<Integer, Set<Integer>> numMap = new HashMap<Integer, Set<Integer>>();
Set<Integer> set = new HashSet<Integer>();
set.add(10);
numMap.put(0, set);
System.out.println("Map before adding is " + numMap);
set.add(20);
System.out.println("Map after adding is " + numMap);
}
哪个打印
Map before adding is {0=[10]}
Map after adding is {0=[20, 10]}
不,您不必重新插入它。
numMap
存储对值的引用,并且s引用Set
不会因为您更改 Set 的内容而改变。
如果您将Set
用作哈希映射中的键,则必须重新插入它,因为更改 Set 的内容会更改 Set 的哈希码。
Map<Set<Integer>, String> map = new HashSet<Set<Integer>, String>();
Set<Integer> nums = ...
map.put(nums, "Hello"); // Use a Set<Integer> as *key*.
nums.add(new Integer(0)); // This changes the keys hashCode (not allowed)
// now do i have to:
numMap.put(nums)?
您需要在更改密钥之前删除映射,并在更改密钥后重新插入映射。