Java - HashMapから特定のkey、valueを削除する

HashMapから特定の要素(key、value)を削除する方法を紹介します。

1. remove()で特定の要素を削除する

HashMap.remove() は引数に渡されたキーを HashMap から削除し、削除された要素の value を返します。

削除したいキーが存在しない場合は、nullを返して終了します。 remove() は key でのみ削除が可能であり、 value で特定の要素を削除することはできません。

以下の例は、HashMapから要素を削除する例です。

import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        Integer deleted = fruits.remove("kiwi");

        System.out.println("HashMap: " + fruits);
        System.out.println("Deleted: " + deleted);
    }
}

Output:

HashMap: {apple=100, grape=300}
Deleted: 200

1.1 remove() で存在しない要素を削除したとき

remove() の引数として存在しない要素のキーを渡すと、何も削除せずに null を返します。

import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        Integer deleted = fruits.remove("kawa");

        System.out.println("HashMap: " + fruits);
        System.out.println("Deleted: " + deleted);
    }
}

Output:

HashMap: {apple=100, kiwi=200, grape=300}
Deleted: null

2. removeIf() で特定の要素を削除する

HashMap.entrySet().removeIf() で特定の条件の要素を削除できます。 削除が成功すると、 removeIf() は true を返します。

removeIf() を使うと、特定の key または value を見つけて削除できます。

2.1 keyで要素を削除する

次の例では、keyがkiwiの要素を削除します。 Entry.getKey() は要素のキーを返し、これを比較して削除対象を見つけることができます。

import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        boolean removed = fruits.entrySet().removeIf(
                entry -> entry.getKey().equals("kiwi"));

        System.out.println("HashMap: " + fruits);
        System.out.println("removed: " + removed);
    }
}

Output:

HashMap: {apple=100, grape=300}
removed: true

2.2 valueで要素を削除する

以下の例は、valueが 200の要素を削除します。 Entry.getValue() は要素の value を返し、これを比較して削除対象を見つけることができます。

import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        boolean removed = fruits.entrySet().removeIf(
                entry -> entry.getValue().equals(200));

        System.out.println("HashMap: " + fruits);
        System.out.println("removed: " + removed);
    }
}

Output:

HashMap: {apple=100, grape=300}
removed: true

3. removeAll() で特定の要素を削除する

removeAll() は引数に渡される Collection の要素を HashMap から削除します。削除に成功すると、removeAll()はtrueを返します。

3.1 keyで要素を削除する

HashMap.keySet() は要素のすべてのキーを返し、この Collection で removeAll() を使って一致するキーの要素を削除することができます。

以下の例は、HashMapでkeyが grapeappleの要素を見つけて削除します。

import java.util.Arrays;
import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        boolean removed = fruits.keySet().removeAll(Arrays.asList("grape", "apple"));

        System.out.println("HashMap: " + fruits);
        System.out.println("removed: " + removed);
    }
}

Output:

HashMap: {kiwi=200}
removed: true

3.2 valueで要素を削除する

HashMap.values() は要素のすべての value を返し、この Collection で removeAll() を使用して一致するキーの要素を削除できます。

以下の例は、HashMapでvalueが 100300の要素を見つけて削除します。

import java.util.Arrays;
import java.util.HashMap;

public class Example {

    public static void main(String[] args) {

        HashMap<String, Integer> fruits = new HashMap<>();
        fruits.put("apple", 100);
        fruits.put("kiwi", 200);
        fruits.put("grape", 300);

        boolean removed = fruits.values().removeAll(Arrays.asList(100, 300));

        System.out.println("HashMap: " + fruits);
        System.out.println("removed: " + removed);
    }
}

Output:

HashMap: {kiwi=200}
removed: true
codechachaCopyright ©2019 codechacha