[英]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.