HashMap は、保存順序を保証しない Map です。
保存順序が維持されるMapを使用したい場合は、HashMapの代わりにLinkedHashMapを使用できます。
1. 保存順序が維持されない HashMap
以下の例は、HashMapで保存順序が保証されていないことを示す例です。
index 0 ~ 9 のキーと値を Map に保存し、結果を出力して保存順序が維持されていることを確認します。
import java.util.HashMap;
import java.util.Map;
public class HashMapInsertionOrder {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
String key = "ID_" + i;
Integer value = i;
map.put(key, value);
}
map.forEach((key, value) -> {
System.out.println("key: " + key + ", value: " + value);
});
}
}
Output:
key: ID_6, value: 6
key: ID_7, value: 7
key: ID_4, value: 4
key: ID_5, value: 5
key: ID_8, value: 8
key: ID_9, value: 9
key: ID_2, value: 2
key: ID_3, value: 3
key: ID_0, value: 0
key: ID_1, value: 1
2. 保存順序が維持される LinkedHashMap
以下はLinkedHashMapを使用した例です。
結果を出力してみると、保存された順序が維持されていることを確認できます。
import java.util.LinkedHashMap;
import java.util.Map;
public class HashMapInsertionOrder2 {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
for (int i = 0; i < 10; i++) {
String key = "ID_" + i;
Integer value = i;
map.put(key, value);
}
map.forEach((key, value) -> {
System.out.println("key: " + key + ", value: " + value);
});
}
}
Output:
key: ID_0, value: 0
key: ID_1, value: 1
key: ID_2, value: 2
key: ID_3, value: 3
key: ID_4, value: 4
key: ID_5, value: 5
key: ID_6, value: 6
key: ID_7, value: 7
key: ID_8, value: 8
key: ID_9, value: 9
3. References
Related Posts
- Java - AtomicReference使用方法
- Java - CountDownLatchを使用する方法、および例
- Java - ScheduledThreadPoolExecutor使用方法
- Java - SummaryStatisticsの使用方法(count、min、max、average)
- Java8 - 関数型インタフェース (Functional Interface) について
- Java - String配列をint配列に変換する
- Java - ArrayList要素の値を変更する方法、replaceAll()
- Java - 2つのリストが同じかどうかを比較
- Java - 配列から特定のIndex要素を削除する3つの方法
- Java - HashMapソート、4つの方法
- Java - 文字列を配列に変換する方法
- Java - ArrayListが空であることを確認する3つの方法
- Java - ArrayListの巡回、4つの方法
- Java - ArrayListの最大値、最小 値を見つける
- Java - ArrayListの合計、平均値の計算
- Java - HashMap巡回、3つの方法
- Java - do whileとwhileの違い
- Java - Lambda式と関数型インタフェース
- Java - List empty(null)チェック、3つの方法
- Java - ArrayListの初期化、4つの方法
- Java - Stream.reduce()の使い方と例
- Java - 2つのマップを結合する(merge、putAll)
- Java - java.util.Dateをjava.sql.Dateに変換する
- Java - ArrayListをStringに変換する
- Java - ClassNotFoundExceptionの発生原因と解決策
- Java - 非静的メソッドは静的コンテキストから参照できません
- Java - NoSuchMethodErrorの原因と解決策
- Java - JSONライブラリを使用する方法(JSONObject、JSONArray)
- Java - byte[]配列をFileに保存
- Java - byte[]の配列をStringに変換
- Java - ファイルのアクセス権を確認し、変更
- Java - 一時フォルダ(Temp directory)パスを取得する
- Javaでシェルスクリプトを実行
- Java - Streamを配列に変換する
- Java - リスト重複排除、2つの方法