簡體   English   中英

Java中的ArrayList到HashMaps

[英]ArrayList to HashMaps in Java

我試圖從排序的ArrayList中獲取值,並希望將其存儲在HashMap ,其中ArrayList的值成為HashMap鍵。 HashMap中的值的順序是否仍然與ArrayList的順序相同?

不。使用TreeMap代替。 這將保留插入順序。

HashMap不保證映射存儲或迭代的順序,因此簡單地運行ArrayList並將它們作為鍵放入HashMap很可能會導致無序迭代。

正如其他人所指出的,LinkedHashMap確實保留了迭代的插入順序 但是,額外的插入運行將導致無序迭代。 HashMap和LinkedHashMap都支持恆定時間查找 - LinkedHashMap支付其在空間中的額外功能(通過維護鍵之間的指針)。

正如其他人也指出的那樣,TreeMap會在更新后保留訂單,因此這對您來說可能是更好的選擇。 當然,如果使用特定的Comparator對ArrayList進行排序,則必須在構造時將同一個Comparator提供給TreeMap,以使排序相同。 請注意,由於實現為紅黑搜索樹,TreeMap沒有恆定的時間查找。

由於您的ArrayList已經訂購,因此無需使用TreeMap,因為這將再次與訂單進行比較,而且沒有必要。 您應該使用LinkedHashMap,它會在您輸入值時保持ArrayList的確切順序。

檢查: 將ArrayList的值插入HashMap

HashMap<String, Item> itemMap = new HashMap<String, Item>();

for (Item item : itemList) 
{
   itemMap.put(item.getitemCode(), item);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM