Hashmap 키의 이름을 바꿀 수 있습니까?
Hashmap 키의 이름을 바꾸는 방법을 찾고 있지만 Java에서 가능한지 모르겠습니다.
요소를 제거하고 새 이름으로 다시 넣으십시오. 지도의 키가라고 가정하면 다음과 String
같이 얻을 수 있습니다.
Object obj = map.remove("oldKey");
map.put("newKey", obj);
이름을 바꿔야하는 키 값을 새 키에 할당합니다. 그리고 이전 키를 제거하십시오.
hashMap.put("New_Key", hashMap.get("Old_Key"));
hashMap.remove("Old_Key");
hashMap.put("New_Key", hashMap.remove("Old_Key"));
이렇게하면 원하는 작업을 수행 할 수 있지만 키의 위치가 변경되었음을 알 수 있습니다.
추가 된 해시 맵 키의 이름을 바꾸거나 수정할 수 없습니다 .
유일한 방법은 키를 삭제 / 제거하고 새 키와 값 쌍으로 삽입하는 것입니다.
이유 : hashmap 내부 구현에서 Hashmap 키 수정자가 최종으로 표시되었습니다.
static class Entry<K ,V> implements Map.Entry<K ,V>
{
final K key;
V value;
Entry<K ,V> next;
final int hash;
...//More code goes here
}
참고로 : HashMap
해시 맵 키의 이름을 바꾸지 않고 새 키로 새 항목을 삽입하고 이전 항목을 삭제해야합니다.
Java 기본 HashMap 대신 Bimap을 사용할 수 있습니다 .
전통적인지도 구현이 아니므로 필요에 맞는지 확인해야합니다.
바이 맵 (또는 "양방향 맵")은 해당 값과 키의 고유성을 유지하는 맵입니다. 이 제약 조건을 사용하면 Bimap이이 Bimap과 동일한 항목을 포함하지만 키와 값이 반전 된 또 다른 Bimap 인 "역보기"를 지원할 수 있습니다.
바이 맵을 사용하여 뷰를 반전하고 키를 바꿀 수 있습니다.
Apache Commons BidiMap 및 Guava BiMap을 모두 확인하십시오 .
나는 hasmap 키의 본질이 인덱스 액세스 목적을위한 것이며 더 이상은 아니지만 여기에 핵이 있다고 주장합니다. 키 값 주위에 키 래퍼 클래스를 만들어 키 래퍼 객체가 인덱스 액세스를위한 해시 맵 키가됩니다. 특정 요구에 맞게 키 래퍼 개체의 값에 액세스하고 변경할 수 있습니다.
public class KeyWrapper<T>{
private T key;
public KeyWrapper(T key){
this.key=key;
}
public void rename(T newkey){
this.key=newkey;
}
}
예
HashMap<KeyWrapper,String> hashmap=new HashMap<>();
KeyWrapper key=new KeyWrapper("cool-key");
hashmap.put(key,"value");
key.rename("cool-key-renamed");
참고 URL : https://stackoverflow.com/questions/10766906/is-it-possible-to-rename-a-hashmap-key
'Programing' 카테고리의 다른 글
오류로 경고-제거하는 방법 (0) | 2020.10.10 |
---|---|
먼저 EF 코드의 CTP5에 대해 ProxyCreationEnabled를 끄는 단점은 무엇입니까? (0) | 2020.10.10 |
Java 키 저장소 도구를 사용하여 키 저장소 생성을 자동화하는 방법은 무엇입니까? (0) | 2020.10.10 |
luis.ai 대 api.ai 대 wit.ai 비교? (0) | 2020.10.10 |
테이블의 열 순서에 대해 걱정할 이유가 있습니까? (0) | 2020.10.10 |