繁体   English   中英

地图的内存分配 <String,List<String> &gt;

[英]Memory assignement for Map<String,List<String>>

当我们做Map<String,List<String>> = new HashMap<String, List<String>>(); 它会创建一个空的地图,但地图内的List是否也为空或为空值?

在某种程度上,这取决于您使用的集合类型。 哈希映射或哈希集不会为以后可能添加的对象分配任何空间。 因此,在创建地图或集合对象时,您只需为其携带“成本”即可。

与ArrayList不同的是,它们是使用初始容量 (默认为10)创建的; 这意味着创建ArrayList<String>将分配一个字符串数组(在这种情况下为String[10] )。 因此, HashMap<String, List<String>>List<Map<Whatever, NotOfInterest>>更“便宜”。

另一方面:这真的不用担心。 除非您从事“嵌入式计算”工作(或者一直在处理数百万个对象),否则您应该更加担心良好的OO设计,而不是Java集合的内存(或性能)成本。

接受的答案:实例化集合时,它为空。 它具有的任何初始容量均为空值,因此在这种情况下没有列表。 –锆石

您的代码:

Map<String,List<String>> = new HashMap<String, List<String>>();

仅与参数化HashMap的实例有关。 您正在使用泛型来强制使用泛型类型,泛型类型指出键的TYPE必须为String,而TYPE值必须为List<String> 在您开始将单独创建的List<String>对象添加到地图之前,内存中没有List<String> 看起来像这样:

Map<String, List<String>> myMap = new HashMap<>();//BTW, You only need to parameterize the object declaration since Java 7

List<String> names = new ArrayList<String>();
names.add("Betty");
names.add("Bob");
names.add("Jessica");
names.add("Jim");
myMap.put("names", names);//Where "names" is your key and names is your value.

您可以继续从此处继续向地图添加更多列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM