CodeGym /Java Blog /무작위의 /java.util.Map에서 keySet 메서드를 사용하는 방법
John Squirrels
레벨 41
San Francisco

java.util.Map에서 keySet 메서드를 사용하는 방법

무작위의 그룹에 게시되었습니다
지도 에 포함된 모든 키를 가져와야 하는 경우 정말 편리한 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] KeySetDemo.main의 java.base/java.util.AbstractCollection.add(AbstractCollection.java:251)에서 스레드 "main" java.lang.UnsupportedOperationException의 예외 (KeySetDemo.java:20) 프로세스가 종료 코드 1로 완료됨
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION