CodeGym /Java Blog /무작위의 /HashMap에서 기존 키 값을 업데이트하는 방법
John Squirrels
레벨 41
San Francisco

HashMap에서 기존 키 값을 업데이트하는 방법

무작위의 그룹에 게시되었습니다
HashMap 또는 다른 Map 에는 항상 키와 값이 있다는 것을 알고 있습니다 . 키를 통해 값에 액세스할 수 있기 때문에 키를 키라고 합니다. 키는 고유하지만 값은 고유하지 않습니다. 따라서 값이 중복될 수 있으므로 값으로 키를 가져올 수 없습니다. 이 기사에서는 Java에서 HashMap 의 기존 키 값을 업데이트하는 방법을 알아봅니다 . Java 구문을 기억합시다. Java의 HashMap은 다음과 같이 선언됩니다.

 HashMap<Key, Value> name
예를 들어 보겠습니다. 예를 들어, 우리는 4명의 친구가 있고 특히 그들을 위해 그들의 이름으로 HashMap을 만들고 채웠습니다. 그들의 키는 정수입니다.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
참고: 다양한 방법으로 지도를 만들고 채울 수 있습니다 . 예를 들어 초기화 블록을 사용합니다. 여기있어:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
또는 다른 맵 인수와 함께 메서드 및 HashMap 생성자를 사용합니다 . 이 방법은 버전 9 이상에서 사용할 수 있습니다.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
이전에 말했듯이 HashMap 에서 키는 정수이고 값에는 일부 문자열(이 경우에는 문자 이름)이 포함됩니다. 음, 케니에게 나쁜 일이 일어났다고 합시다(사우스 파크 만화 시리즈를 아는 독자들은 케니에게 나쁜 일이 꽤 자주 일어났다는 것을 확실히 알고 있습니다). 따라서 그런 일이 발생하면 우리는 이 회사( HashMap )에서 Kenny를 제거하고 그를 Butters라는 이름의 다른 친구로 교체해야 합니다. 이는 값 업데이트 작업이기 때문에 수행하기가 매우 쉽습니다. 우리 케니 보이의 열쇠는 == 3 입니다 . Kenny가 있는 키 3의 값을 변경해야 합니다. 이를 위해 put() 메서드를 사용할 수 있습니다 .

names.put(3, "Butters");
이 경우 지도를 화면에 표시하면 결과는 다음과 같습니다.

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Kenny와 모든 것이 잘 되어 그를 회사에 계속 유지하고 싶지만 그의 키를 업데이트해야 할 이유가 있다면 어떻게 합니까? 그는 더 이상 3위가 아니라 5위입니다. 키 5를 사용하여 Kenny를 지도에 다시 넣고 결과를 인쇄해 보겠습니다. put 메소드를 잘 사용할 수 있습니다 . 이 예제의 전체 코드는 다음과 같습니다.

import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
       Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
       names.put(5, "Kenny");
       System.out.println(names);
   }
}
결과가 어떻게 될지 이미 짐작하셨을 것입니다.

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
이것이 우리가 기대했던 것입니까? 이제 Kenny는 HashMap 에 두 개의 키를 가지고 있습니다 . 음, 엄밀히 말하면, 우리의 객체는 키에 의해 고유하게 결정되기 때문에 우리가 의미하는 바가 무엇이든 이들은 두 개의 다른 Kenny입니다. 그것은 사람의 여권과 같으며 고유해야 합니다. 따라서 해시맵 키를 직접 추가한 후에는 이름을 바꾸거나 업데이트할 수 없습니다. 이 작업은 단순히 사용할 수 없습니다. 그러나 기만적인 조작을 할 수 있습니다. 새 키로 새 항목을 삽입하고 이전 항목을 삭제합니다. 이는 HashMap 제거 방법을 사용하여 수행할 수 있습니다. remove()는 연결을 제거할 뿐만 아니라 삭제된 값도 반환합니다(이전에 있었던 경우). 이 작업으로 예제를 보완해 보겠습니다.

//easy replacement example
import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
      Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
           
       names.put(5, "Kenny"); //Adding “new” Kenny 
       System.out.println(names.remove(3)); //Update value of the key: Removing “old” Kenny and print out deleted value

       System.out.println(names);
   }
}
이제 마침내 필요한 것을 얻었고 Kenny를 찾을 수 있는 키를 업데이트했습니다. 결과는 다음과 같습니다.
케니 {1=스탠, 2=카일, 4=카트맨, 5=케니}
물론 "이전" Kenny를 제거하고 새 Kenny를 순서에 관계없이 추가하는 작업을 수행할 수 있습니다. 그들은 본질적으로 독립적입니다. 또는 한 줄만 사용하여 코드를 줄이십시오.

names.put(5, names.remove(3));
결과는 반드시 같을 것입니다. 따라서 Java HashMap 에서 키를 변경하는 유일한 적절한 방법은 항목을 삭제하고 새 키와 함께 동일한 값을 삽입하는 것입니다. 다른 방법으로 할 수 있지만 요소를 추가하고 제거하는 것과 거의 같은 이야기가 될 것입니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION