gpt4 book ai didi

Java TreeMap Nested ,clear 删除所有数据,而 new 则不

转载 作者:行者123 更新时间:2023-12-01 05:31:03 25 4
gpt4 key购买 nike

我正在使用嵌套的 TreeMap[用户 map [图书馆 map [图书 map ]]

当我使用 BookMap.clear() 而不是 new 时,它会清除所有数据,并保留 BookMap 中最后 2 个输入的数据。我需要创建新对象吗?我预计在添加第一个 BookMap 并进行清除后不会影响 LibraryMap,但确实如此。

TreeMap<Integer, Integer> BookMap = new TreeMap<Integer, Integer>();
TreeMap<Integer, TreeMap<Integer, Integer>> LibraryMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>> UserMap = new TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>>();


// Adding data to a tree map
BookMap.put(1, 2000);
BookMap.put(2, 2000);
BookMap.put(3, 2003);

LibraryMap.put(1,BookMap);
//BookMap.clear();
BookMap = new TreeMap<Integer, Integer>();
BookMap.put(4, 2006);
BookMap.put(5, 2007);

LibraryMap.put(2,BookMap);

BookMap= new TreeMap<Integer, Integer>();
BookMap.put(6,2009);
BookMap.put(7, 2012);

LibraryMap.put(3,BookMap);

UserMap.put(1,LibraryMap);

最佳答案

如果要将新的 BookMap 与 LibraryMap 中的新键相关联,则需要创建一个新键。

如果您使用clear,您的变量BookMap仍然是对与LibraryMap中的键1关联的实例的引用。换句话说:

LibraryMap.put(1,BookMap);
BookMap.clear(); //still the same instance as 1-line above
BookMap.put(4, 2006); // still the same
BookMap.put(5, 2007); // ...
LibraryMap.put(2,BookMap); // LibraryMap.get(1) and .get(2) will return the same instance

顺便说一句,不相关,但使用大写字母作为变量名称是错误的:约定类是大写字母,变量是小写字母(bookMap)。

关于Java TreeMap Nested ,clear 删除所有数据,而 new 则不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8974111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com