簡體   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