- Map에서 new Map과 clear()의 차이
for 문을 활용하여 List 안에 Map을 담는 경우, Map 객체를 하나만 생성하고 clear() 하여 재사용하는 방식을 생각해볼 수 있다. 이 방법은 좋은 방법일까?
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
List<Map<String, String>> list2 = new ArrayList<>();
Map<String, String> map = new HashMap<>();
for(int i = 0 ; i < 3 ; i++) {
map.clear();
map.put("key", "" + i);
list.add(map);
Map<String, String> map2 = new HashMap<>();
map2.put("key", "" + i);
list2.add(map2);
}
for(int i = 0 ; i < 3 ; i++) {
System.out.println("map : " + list.get(i));
System.out.println("map 주소값 : " + System.identityHashCode(list.get(i)));
System.out.println();
System.out.println("map2 : " + list2.get(i));
System.out.println("map2 주소값 : " + System.identityHashCode(list2.get(i)));
System.out.println("===================================");
}
}
}
아래 출력결과를 보면 알듯이 clear()를 할 경우 해당 Map의 값만 사라질 뿐, 객체의 주소값은 변함이 없다.
List 안에 있는 각각의 Map 객체는 독립적이여야 하기에 new Map으로 주소값을 새로 할당하는 게 맞다.