CodeGym /Java Blog /ランダム /java.util.MapでkeySetメソッドを使用する方法
John Squirrels
レベル 41
San Francisco

java.util.MapでkeySetメソッドを使用する方法

ランダム グループに公開済み
Mapに含まれるすべてのキーを取得する必要がある場合は、非常に便利なjava.util.HashMap.keySet()メソッドを使用できます。この記事では、その仕組みについて説明します。ご存知のとおり、HashMapクラスはMapインターフェイスを実装しているため、例ではHashMap keySet()メソッドを使用します。

HashMap keySet() メソッドの署名と動作原理

Set<K> keySet()メソッドは、このマップに含まれるキーのSetビューを返します。キーを保持するこの Set コレクションの特徴は、その中に重複した要素を含めることができないことです。セットには地図が裏付けられています。つまり、マップ内で何かが変更された場合、それはセットに反映され、その逆も同様です。たとえば、このセットから項目を削除すると、キーとそれに対応する値がマップから自動的に削除されますが、そこに新しい項目を追加することはできません。

HashMap keySet() の例

友人の名前とデジタル キーを含むHashMap を作成し、 HashMap keySet()メソッドを使用してキーのセットを出力しましょう。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("myKeySet of the map: "+myKeySet);
出力は次のとおりです。
マップのキー: [1、2、3、4、5]
Java にはjava.util.HashMap.keySet()メソッド の他に、 entrySet()メソッドがあり、これもSetを返しますが、このセットにはキーと値のペアが含まれます。次に、 java.util.HashMap.keySet()メソッドとjava.util.HashMap.entrySet()メソッドの両方を使用した例を示します。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
       System.out.println("keys and values of the map: " );
       for( Map.Entry e : myHashMap.entrySet()){
           System.out.println(e.getKey() + " : " + e.getValue());
       }
   }
}
出力は次のとおりです。
マップのキー: [1、2、3、4、5] マップのキーと値: 1 : John 2 : Ivy 3 : Ricky 4 : Andrew 5 : Alex
ここで、 keySet から要素を削除して、それが元のHashMapに影響を与えることを確認してみましょう。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
      myKeySet.remove(4);
       System.out.println("myHashMap after removing an element from myKeySet: " + myHashMap);
       System.out.println("keys of the map: " + myKeySet);
   }
}
出力は次のとおりです。
マップのキー: [1, 2, 3, 4, 5] myKeySet から要素を削除した後の myHashMap: {1=John, 2=Ivy, 3=Ricky, 5=Alex} マップのキー: [1, 2] 、3、5]
ご覧のとおり、 Set からキー「4」を削除した結果、 HashMap からペア「4-Alex」が削除されまし次に、 keySet()にキーを追加してみましょう。

import java.util.HashMap;
       import java.util.Map;
       import java.util.Set;

public class KeySetDemo {
   public static void main(String[] args) {
       Map<Integer, String> myHashMap = new HashMap<>();
       myHashMap.put(1, "John");
       myHashMap.put(2, "Ivy");
       myHashMap.put(3, "Ricky");
       myHashMap.put(4, "Andrew");
       myHashMap.put(5, "Alex");

       //using map.keyset() method and print out the result
       Set<Integer> myKeySet = myHashMap.keySet();
       System.out.println("keys of the map: " + myKeySet);
       myKeySet.add(7);

   }
}
この場合、 keySetがhashMapに接続されている ため、例外が発生します。
マップのキー: [1、2、3、4、5] スレッド「メイン」の例外 java.lang.UnsupportedOperationException (java.base/java.util.AbstractCollection.add(AbstractCollection.java:251)、KeySetDemo.main) (KeySetDemo.java:20) プロセスは終了コード 1 で終了しました
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION