JAVA/Coding Test 준비

Map

yebin0322 2025. 3. 24. 20:55
반응형

Map.entrySet()

  • 보통 Map은 keySet()으로 키만 가져오거나 values()로 값만 가져올 수 있음
  • 키와 값이 함께 필요할 때 entrySet() 사용
  • entrySet()을 사용하면 Map에 있는 <Key, Value> 쌍을 Set<Map.Entry<K, V>> 형태로 반환
  • getKey(), getValue()메소드를 사용해 각각 키와 값을 얻을 수 있음
package Map;

import java.util.HashMap;
import java.util.Map;

public class EntrySet {
    public static void main(String[] args){
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);

        //entrySet()을 사용해 전체 출력
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
        }
    }
}
Key: Apple Value: 3
Key: Cherry Value: 7
Key: Banana Value: 5

 

Map.keySet()

  • Map에 저장된 모든 키(key)만 모아서 Set<K> 형태로 반환하는 메소드
  • Map에서 모든 키를 가져와서 반복문을 돌리거나 특정 키를 찾을 때 유용
  • 반복문에서 map.get(key)를 계속 호출하면 성능이 저하됨 -> entrySet()을 사용해 한 번에 키-값을 가져와야 함
  • 반환된 Set을 수정하면 Map도 변경됨 -> map.keySet().remove("Apple")을 하면 map에서도 "Apple"이 삭제됨
package Map;

import java.util.HashMap;
import java.util.Map;

public class KeySet {
    public static void main(String[] args){
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);

        //keySet()을 사용하여 전체 키 출력
        for(String key : map.keySet()){
            System.out.println(key);
        }
    }
}
Apple
Cherry
Banana

Map.get()

  • 주어진 키(key)에 해당하는 값을 반환하는 메소드
  • Map에서 특정 키에 저장된 값을 가져올 때 사용
package Map;

import java.util.HashMap;
import java.util.Map;

public class Get {
    public static void main(String[] args){
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);

        System.out.println("Apple 개수 : " + map.get("Apple"));
        System.out.println("Banana 개수 : " + map.get("Banana"));
        System.out.println("Grape 개수 : " + map.get("Grape"));
    }
}
Apple 개수 : 3
Banana 개수 : 5
Grape 개수 : null

Map.values()

  • 해당 map의 value 목록을 Collection<V> 형태로 return
  • key는 필요 없고 값만 갖고 오고 싶을 때 유용
  • 중복이 있어도 모두 포함됨
package Map;

import java.util.HashMap;
import java.util.Map;

public class Values {
    public static void main(String[] args){
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);
        
        //values()를 사용하여 전체 값 출력
        for(Integer value : map.values()){
            System.out.println(value);
        }
    }
}
3
7
5

Map.entrySet().Iterator()

  • Map의 key-value 쌍(Entry)을 순차적으로 탐색할 수 있도록 Iterator를 반환하는 코드
  • Map을 Iterator를 사용해 반복하면서 요소를 하나씩 가져오거나 삭제할 때 유용
  • 요소 삭제가 필요할 때 사용하면 좋음 -> 요소 삭제 시 안전함 
    • map.entrySet() -> Set<Map.Entry<K, V>> 반환
    • .Iterator() -> set에 대한 Iterator<Map.Entry<K, V>> 생성
package Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class EntrySetIterator {
    public static void main(String[] args){
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);

        Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator();

        while (iterator.hasNext()){
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}
Apple 3
Cherry 7
Banana 5

 

forEach()

  • Map의 각 요소(key-value)를 순회하는 메소드
  • Java 8부터 람다식(Lambda Expression)을 활용한 forEach() 메소드 도입
  • 단순 조회 시 사용하면 좋음
  • 내부적으로 entrySet()을 사용함
package Map;

import java.util.HashMap;
import java.util.Map;

public class ForEach {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 3);
        map.put("Banana", 5);
        map.put("Cherry", 7);

        map.forEach((key, value) -> {
            System.out.print(key + " " + value);
        });
    }
}
Apple 3
Cherry 7
Banana 5
반응형