Java中的ArrayList到HashMaps

时间:2014-03-20 04:49:29

标签: java arraylist hashmap

我正在尝试从ArrayList获取已排序的值,并希望将其存储在HashMap中,其中ArrayList的值将成为HashMap的键}。 HashMap中的值的顺序是否仍然与ArrayList的顺序相同?

4 个答案:

答案 0 :(得分:2)

没有。请改用TreeMap。这将保留插入顺序。

答案 1 :(得分:1)

HashMap不保证映射的存储或迭代顺序,因此只需运行ArrayList并将它们作为键放入HashMap就很可能导致无序迭代。

正如其他人所指出的,LinkedHashMap确实为迭代保留了插入顺序。但是,额外的插入运行将导致无序迭代。 HashMap和LinkedHashMap都支持恒定时间查找 - LinkedHashMap支付其在空间中的额外功能(通过维护键之间的指针)。

正如其他人也指出的那样,TreeMap会在更新后保留订单,因此这对您来说可能是更好的选择。当然,如果使用特定的Comparator对ArrayList进行排序,那么必须将相同的Comparator提供给构建的TreeMap,以使排序相同。请注意,由于实现为红黑搜索树,TreeMap没有恒定的时间查找。

答案 2 :(得分:0)

由于您的ArrayList已经订购,因此无需使用TreeMap,因为这将再次与订单进行比较,并且不需要。您应该使用LinkedHashMap,它会在您输入值时保持ArrayList的确切顺序。

答案 3 :(得分:-1)

选中此项:将ArrayList的值插入HashMap

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

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