728x90

오늘 작업하면서 삽질했던 경험을 잊지 않기위해 포스팅하겠다.

 

public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();
    List<Map<String, String>> list = new ArrayList<>();
    String[] arrStr = {"유재석", "강호동", "이경규", "!!!"};

    for(String str : arrStr) {
        map.put("name", str);

        list.add(map);
    }

    System.out.println(list);
}

위 코드블럭의 main method를 실행하면 결과는 다음과 같다.

 

1번째 코드블럭 결과화면

HashMap에서 key값은 중복이 허용되지 않기 때문에 아무리 ArrayList의 담았다해도 같은 key값의 value는 재할당 된다.

이 때 아주 좋은 방법이 있는데 그것은 아래 코드블럭처럼 하면 된다.

 

public static void main(String[] args) {
    List<Map<String, String>> list = new ArrayList<>();
    String[] arrStr = {"유재석", "강호동", "이경규", "!!!"};

    for(String str : arrStr) {
        Map<String, String> map = new HashMap<>();
        map.put("name", str);

        list.add(map);
    }

    System.out.println(list);
}

2번째 코드블럭 결과화면

for문을 반복할 때 마다 HashMap을 생성해주는 것이다. 이렇게 되면 list의 담는 map이 서로다르기 때문에 같은 중복키여도 value값이 다르게 할당해줄 수 있다.

728x90
TOP