Java - 保存順序が維持される HashMap

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

codechachaCopyright ©2019 codechacha