728x90
keySet() 메서드와 for문 사용 (1:1)
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;
}
}
}
entrySet() 메서드와 for문 (1:1)
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;
}
}
}
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 Study' 카테고리의 다른 글
[Java] StringTokenizer - split()과의 차이점 (2) | 2024.01.28 |
---|---|
[Java] StringJoiner (0) | 2024.01.28 |
[Java] 진수 변환 쉽게하기 (10진수 ↔ 2진수, 8진수, 16진수) (1) | 2024.01.28 |
[Java] 정수 제곱근 판별 (0) | 2024.01.28 |
[Java] HashMap (0) | 2024.01.15 |