我想知道,HashMap
和HashSet
都没有按顺序返回值?
请有人澄清一下。
我很困惑,为什么你需要这两个?
答案 0 :(得分:1)
总之 - 是的。 HashMap
或HashSet
都不对迭代顺序提供任何保证。
答案 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接口的实现)和其他
包装起来: