Hashmap put(),它总是订购吗?

Pal*_*lly 3 java variables hashmap

当我们hashmap<Key, Value>使用变量添加值时put(),它们总是排序吗?

因为当我尝试使用简单的代码时,他们正在订购.

例:

Map<Integer, Integer> ctrArMap = new HashMap<Integer, Integer>();
    ctrArMap.put( 1, 11);
    ctrArMap.put( 2, 12);
    ctrArMap.put( 3, 13);
    ctrArMap.put( 4, 14);
    ctrArMap.put( 5, 15);
    System.out.println(ctrArMap);
Run Code Online (Sandbox Code Playgroud)

但就我而言,他们并没有订购.

Vik*_*yap 7

  1. HashMap: - HashMap永远不会保留您的广告订单.它在内部使用散列概念,通过它生成一个HashCode对应的key并将其添加到HashMap.

  2. LinkedHashMap: - LinkedHashMap它保留您的广告订单.并将keys与您插入此订单中的订单相同LinkedHashMap.

  3. TreeMap: - TreeMap该类使用Tree实现Map 接口.A 提供了按排序顺序存储键/值对的有效方法,并允许快速检索.TreeMap

您应该注意,与a不同HashMap,树图保证其元素将按升序键排序


Pet*_*rey 6

HashMap 不保留插入顺序。但是,如果您按顺序使用 0 到 10 的值,这些值会在内部散列到 0 到 10 的存储桶中,并按该顺序放置在数组中。当您迭代 HashMap 时,您会按顺序查看这些存储桶。注意:此实现将来可能会发生变化,但这种情况可能不会发生。

HashMap 的默认大小为 16,负载因子为 0.7,您可以添加 11 个值而无需调整大小。这意味着当您查看这些值时,当前的实现恰好按排序顺序放置 0 到 10。

如果您只需要 0 到 10 的值按顺序排列,我建议使用数组,而不是 HashMap。


Eri*_*uan 5

HashMap没有固有的顺序。如果要查找插入顺序,请使用LinkedHashMap。如果您要查找自然顺序(AZ,0-9),请使用TreeMap