java多实例HashMap
可以用同一个键创建多个hashmaps实例吗?例如:
while(br.readLine != ""){
HashMap<Integer,String> hm=new HashMap<Integer,String>();
String[] Values = readLine.split(":");
hm.put(1,Value[1]);
hm.put(2,Value[2);
hm.put(3,Value[3]);
}
在这种情况下,将为循环的每次迭代创建hashmap的新实例,还是覆盖它
如果它被覆盖,如何在此场景中实现映射的多个实例
# 1 楼答案
首先,您应该将映射从
while
语句中移出,否则在每次迭代中都会创建一个新的Map
实例,因此您会丢失放置在以前使用的映射实例中的内容我看不出为包含几个值的每条线创建贴图实例的真正意义
这似乎是一种开销
要不覆盖与预定义键关联的值,可以使用单个映射并具有多个与该键关联的
String
值因此,您可以使用
Map
ofList
ofString
而不是Map
ofString
如果您有3个常量键(如示例中所示),则可以在循环之前初始化列表
否则,您可以动态实例化列表
# 2 楼答案
每次创建的映射的新实例
不是奥弗雷登。已创建多个实例
请记住,无论何时使用new关键字used,都是在创建类的新实例
而且,一旦循环终止,它们就不再有用了。希望您正在hashmap上做一些事情,稍后在循环中
# 3 楼答案
将为循环的每个迭代创建一个新的
HashMap
实例,并且在迭代结束时将符合GC的条件,因为没有对它的引用您可以在循环外部创建一个
List<HashMap<Integer, String>>
,并将新创建的映射不断添加到循环中的此列表中,以便它们也可以在循环外部访问PS:如果“overrided”的意思是“overrided”,那么“no”,则旧的hashmap实例不会被“重用”。对于每个迭代,将创建一个新实例