이번 포스팅은 HashMap에서 value로 key를 찾는 다양한 방법들을 소개합니다.
value을 사용하여 key를 찾는 방법(1:1)
HashMap 클래스는 키(key)-값(Value) 쌍을 저장할 수 있는 Java의 컬렉션입니다. 키를 사용하여 값을 얻으려면 get() 메서드의 매개변수로 키를 전달하면 됩니다.
하지만, 키를 직접적으로 가져오는 메서드는 존재하지 않습니다. 아래에서 소개하는 방법들을 사용한다면 키를 가져올 수 있으며 상황에 맞게 응용할 수 있습니다.
keySet() 메서드와 for 문
keySet() 메서드와 for 문을 사용하는 방법은 모든 키를 가져와서 반복문을 실행합니다. 키에 매핑된 값과 특정 값이 일치하면 키를 반환합니다. 이 방법은 키와 값이 1:1 관계인 경우에만 사용할 수 있습니다.
public static void main(String[] args) {
String findKey = "";
Map<String, Integer> map = new HashMap<>();
map.put("John", 34);
map.put("Jane", 26);
map.put("Billy", null);
// 모든 키를 순회합니다.
for(String key : map.keySet()) {
// 키와 매핑된 값이랑 equals() 메서드에 전달된 값이랑 일치하면 반복문을 종료합니다.
if(map.get(key).equals(34)) { // 키가 null이면 NullPointerException 예외 발생
findKey = key;
break;
}
}
}
※ 참고
HashMap의 키는 null을 허용합니다. 위 예제에서 HashMap 키에 null이 존재하는 경우 NullPointerException 예외가 발생합니다.
반응형
entrySet() 메서드와 for 문
entrySet() 메서드와 for 문을 사용하는 방법은 위 방법과 유사합니다. 값도 가져올 수 있다는 차이점이 있으며 for문 대신 Iterator 객체를 사용할 수 있습니다.
public static void main(String[] args) {
String findKey = "";
Map<String, Integer> map = new HashMap<>();
map.put("John", 34);
map.put("Jane", 26);
map.put("Billy", null);
for(Map.Entry<String, Integer> entry : map.entrySet()){
// 동일한 값이 있으면 반복문을 종료합니다.
if(entry.getValue().equals(34)) { // 값이 null이면 NullPointerException 예외 발생
findKey = entry.getKey();
break;
}
}
}
※ 참고
HashMap의 값은 null을 허용합니다. 위 예제에서 HashMap 값에 null이 존재하는 경우 NullPointerException 예외가 발생합니다.
value을 사용하여 key를 찾는 방법(1:N)
위에서 설명한 방법들은 키와 값이 1:1 관계인 HashMap에서 동작합니다. 그러나 HashMap에서 키는 고유하지만 값은 중복될 수 있습니다. 이러한 경우에는 List를 사용하여 특정 값을 만족하는 키를 List에 추가합니다.
public static void main(String[] args) {
List<String> keyList = new ArrayList<String>();
Map<String, Integer> map = new HashMap<>();
map.put("John", 34);
map.put("Jane", 26);
map.put("Billy", null);
for(Map.Entry<String, Integer> entry : map.entrySet()){
if(entry.getValue().equals(26) ){
keyList.add(entry.getKey());
}
}
}
반응형
'Java > 컬렉션' 카테고리의 다른 글
[Java]컬렉션(Collection) 최소값 최대값 구하기 (0) | 2022.04.05 |
---|---|
[Java]HashSet 최소값 최대값 구하기 (0) | 2022.04.04 |
[Java]HashMap 키(Key) 정렬 방법 (0) | 2022.04.04 |
[Java]Map을 List로 변환 (1) | 2022.04.04 |
[Java]HashMap 키와 값을 가져오는 방법 (0) | 2022.04.04 |
댓글