Map에서 clear와 new Map

한 달 전에 나는 List안에 Map 형태인
List<Map<String, String>>를
루프문을 돌리면서 list의 첫번째 Map부터 마지막 Map까지 조건에 맞는 값만
비어있는 다른 List<Map<String, String>>에 넣을 일이 있었다.

예시로 예를 들자면…

List<HashMap<String, String>> targetList = someList;
List<HashMap<String, String>> resultList = new List<HashMap<String, String>> ();
HashMap<String, String> targetMap = new HashMap<String, String>();
for (HashMap<String, String> target : targetList) {
	targetMap.clear();
	targetMap.put("key1", target.get("key1"));
	targetMap.put("key2", target.get("key2"));
	.
	.
	.
	
	resultList.add(targetMap);
}

각 target의 각 key값에 맞는 value가 하나하나 resultList에 들어가고있다고 생각을 했었는데…
값이 제대로 안 뜨는 일이 생겼다.

알고보니 clear로는 참조값이 그대로여서 resultList에 add된 값들도 바뀌고있던 것이었다.
new Map으로 해줄 경우 참조값이 달라지기 때문에 같은 현상은 일어나지 않는다.