私はJavaでハッシュマップを導入しようとしていましたが、ハッシュマップは順序付けされていないと分類されていませんでした。したがって、System.out.println(HM)
を使用して印刷するときは、キーの任意の順序でマッピングを取得する必要があります。例えば、次のコードのキーの明らかにランダムな順序でなぜHashMapが自然な順序で印刷されるのですか
HashMap<Integer,String> HM = new HashMap<>();
HM.put(16,"hello16");
HM.put(6, "hello6");
HM.put(1, "hello1");
プリント{16=hello16, 1=hello1, 6=hello6}
。
{1=hello1, 6=hello6, 15=hello15}
私は友人を尋ねたし、彼はそれが初期容量に関係だと言った(= 16)の:私はHM.put(15,"hello15");
とHM.put(16,"hello16");
を交換する場合でも、それはキーの自然順序でマッピング、is surprising and seems unlikely by chanceを印刷しますHashMapだが彼はそれをはっきりと説明できなかった。誰でもこの特定の例で出力のこの違いを説明できますか?
これがなぜ起こるのかは問題ではありません。なぜなら、それに頼るべきではないからです。 Java 9では、「Set#of」と「Map#of」の挿入順序がランダム化されていました。 –
@RomanPuchkovskiy OPは、「System.out.println(HM)を使用して印刷するときに_ _ ...」と表示します。 –
「キーの順不同でマッピングを取得する必要があります。 HashMapはランダムな順序を約束しません。それは、秩序が何であるかについて全く約束をしません。 – user2357112