HashMap中存储数据,取出来顺序为何全部改变了?

时间:2021-08-22 19:15:34
有HashMap map = new HashMap();
map.put().....

Iterator it = map.values().iterator();

while(it.hasNext())
{
  System.out.println(it.next());
}

你再迭代出it中的数据,顺序和存进map数据的顺序完全不一样?
难道是HashMap中的键-值对是按照它的hash值顺序排列的?

7 个解决方案

#1


hashmap不保存你存放时候的顺序

#2


谢谢

#3


在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。

#4


hashmap类是散列映射并不保证它的元素顺序.因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序.

#5


学习

#6


用LinkedHashMap,可以保证迭代输出的顺序和输入的一样

#7


如果你又想用Map又想保持顺序,可以使用LinkedHashMap

它和HashMap一样,但是可以保证插入顺序,但是这样也增加了一点点开销(这个不会太大)

#1


hashmap不保存你存放时候的顺序

#2


谢谢

#3


在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。

#4


hashmap类是散列映射并不保证它的元素顺序.因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序.

#5


学习

#6


用LinkedHashMap,可以保证迭代输出的顺序和输入的一样

#7


如果你又想用Map又想保持顺序,可以使用LinkedHashMap

它和HashMap一样,但是可以保证插入顺序,但是这样也增加了一点点开销(这个不会太大)