什么是HashMap和HashSet值的顺序

时间:2017-12-01 16:41:54

标签: java hashmap hashset

我想知道,HashMapHashSet都没有按顺序返回值? 请有人澄清一下。 我很困惑,为什么你需要这两个?

5 个答案:

答案 0 :(得分:1)

总之 - 是的。 HashMapHashSet都不对迭代顺序提供任何保证。

答案 1 :(得分:1)

HashMap API未定义迭代次序。

但是,如果你看看HashMap的实现,你可以推断出迭代顺序,键和键之间存在复杂的瞬态关系。哈希值,键的插入顺序和哈希表的大小。如果哈希表调整自身的大小,这种关系就会被扰乱。

请参阅:

Is the order of values retrieved from a HashMap the insertion order

答案 2 :(得分:0)

HashMap存储键值对。 HashSet是一个无序的对象集合,其中每个对象都没有重复。两者都不必按顺序插入或以其他方式迭代。有序实现但您不会使用标准的HashMap或HashSet类。

进一步讨论here

Linked Hash Map确实维护广告订单

答案 3 :(得分:0)

如果你想要插入顺序中的值,你必须使用LinkedHasmap,你可以使用TreeMap按键排序。 hash不提供任何顺序,因为它使用hascode来排序值,它可能因对象而异。

答案 4 :(得分:0)

HashMap是Map接口的一个实现。 Map是一种数据结构,表示A对应于B.

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(new Integer(1), "Test");

在上面的情况中,我们知道每次我们寻找1时,通讯员都是&#34;测试&#34;。

集合是完全不同的东西。集确保您的集合中不存在重复的对象。 HashSet是Set interface的实现。

要插入和检索某些内容,以便可以使用LinkedHashMap,LinkedHashSet,ArrayList(List接口的实现)和其他

包装起来:

  • 地图 - 对应的对象
  • 设置 - 确保集合中的唯一对象