[자료구조]Map : 맵

김피자·2023년 2월 16일
0

자료구조

목록 보기
2/4

Map 생성해 초기값 지정하기

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

보통 이렇게 값을 추가하지만 double brace initialize문법을 사용하면 아래처럼 생성이 가능함

Map<String, Integer> map = new HashMap<>(){{
	put("A", 1);
	put("B", 2);
	put("C", 3);
}};

장점

  1. 코드 간결
  2. 코드 가독성 좋음
  3. 동일 식에서 생성과 함께 초기화가 수행

단점

  1. 모호하고 알려지지 않은 문법
  2. 사용할 때마다 추가 클래스 생성
  3. 상속 클래스가 final인 경우 동작 X
  4. 숨겨진 참조를 보유하고 있어 메모리 누수 유발 가능

Map의 모든 값 조회

enrtySet 사용

map의 entrySet을 사용해 key, value 쌍의 목록을 얻을 수 있다.

Map<String, Integer> map = new HashMap<>(){{
	put("A", 1);
	put("B", 2);
	put("C", 3);
}};
for(Map.Entry<String, Integer> entry : map.entrySet()){
	System.out.println(entry.getKey() + ":" + entry.getValue());
}

keySet 사용

keySet을 사용해 key의 목록을 얻고, 이를 통해 value를 얻을 수 있다.

Map<String, Integer> map = new HashMap<>(){{
	put("A", 1);
	put("B", 2);
	put("C", 3);
}};
for(String key : map.keySet()){
	System.out.println(key + ":" + map.get(key));
}

위의 경우, key를 통해 value를 찾는 과정이 추가돼 데이터 양이 많으면 비효율적일 수 있다.
그 경우에는 entrySet을 사용하자!

Iterator 사용

Map<String, Integer> map = new HashMap<>(){{
	put("A", 1);
	put("B", 2);
	put("C", 3);
}};
Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();

while(iter.hasNext()){
	var entry = iter.next(); // 타입 추론
    System.out.println(entry.getKey() + ":" + entry.getValue());
}
profile
제로부터시작하는코딩생활

0개의 댓글