개발공작소
728x90
반응형

 

 

 

 

자바를 오랜만에 하다보니, 나도 모르게 생성자를 한번만 만들고 add를 해서

마지막 값만 추가되는 현상이 발생한 김에 정리해본다.

 

 

틀린코드

<java />
ArrayList<Object> list = new ArrayList<Object>(); HashMap<String, Integer> obj = new HashMap<String, Integer>(); for(int i=1; i<=5; i++) { obj.put("테스트값 : "+i, i); list.add(obj); } System.out.println(list); /** 결과값 * [{테스트값 : 4=4, 테스트값 : 5=5, 테스트값 : 2=2, 테스트값 : 3=3, 테스트값 : 1=1}, * {테스트값 : 4=4, 테스트값 : 5=5, 테스트값 : 2=2, 테스트값 : 3=3, 테스트값 : 1=1}, * {테스트값 : 4=4, 테스트값 : 5=5, 테스트값 : 2=2, 테스트값 : 3=3, 테스트값 : 1=1}, * {테스트값 : 4=4, 테스트값 : 5=5, 테스트값 : 2=2, 테스트값 : 3=3, 테스트값 : 1=1}, * {테스트값 : 4=4, 테스트값 : 5=5, 테스트값 : 2=2, 테스트값 : 3=3, 테스트값 : 1=1}] */

 

 

올바른코드

<java />
public static void main(String[] args) { ArrayList<Object> list = new ArrayList<Object>(); HashMap<String, Integer> obj = new HashMap<String, Integer>(); for(int i=1; i<=5; i++) { /** 반복문을 수행할 때, 생성자로 초기화 해줘야 한다. */ obj = new HashMap<String, Integer>(); obj.put("테스트값 : "+i, i); list.add(obj); } System.out.println(list); } /** * 결과 * [{테스트값 : 1=1}, {테스트값 : 2=2}, {테스트값 : 3=3}, {테스트값 : 4=4}, {테스트값 : 5=5}] */

 

 

for문으로 반복문을 돌릴 때, 반드시 new를 통하여 생성자를 초기화 해주어야 한다.

그렇지 않으면 같은 값이 중복으로 들어간다. 기초적인거라도 안쓰다 보면 잘 까먹는 것 같다..

 

 

 

728x90
반응형
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!