프로그래밍/Java

ArrayList_Clear, new 차이점

개발계발게발 2021. 6. 11. 17:49
반응형

ArrayList Clear, new 차이점

 

이중 배열생성

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
ArrayList<String> innerList = new ArrayList<String>();

innerList.add("1");
innerList.add("2");
innerList.add("3");

list.add(innerList);
list.add(innerList);
list.add(innerList);

// System.out.println(list);	[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
for (ArrayList<String> string : list) {	//[1, 2, 3]
	System.out.println(string);	//[1, 2, 3]
	}				//[1, 2, 3]		

 

이중배열 값입력 문제 발생

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
ArrayList<String> innerList = new ArrayList<String>();

innerList.add("1");
innerList.add("2");
innerList.add("3");		

list.add(innerList);	//list add

for (ArrayList<String> in : list) {	//[1,2,3]
	System.out.println(in);
}
innerList.clear();	//clear
		
innerList.add("4");
innerList.add("5");
innerList.add("6");

list.add(innerList);	//list add

for (ArrayList<String> in : list) {	//[4, 5, 6] Clear시 번지수 동일하여 4, 5, 6값 저장
	System.out.println(in);		//[4, 5, 6] Clear시 번지수 동일하여 4, 5, 6값 저장
}

 

clear로 초기화시 번지수가 동일하여 입력 문제 발생

 

new로 재할당(새로 생성되어 번지수 변경)

 

innerList.add("1");
innerList.add("2");
innerList.add("3");		

list.add(innerList);

for (ArrayList<String> in : list) {	//[1,2,3]
	System.out.println(in);
}

//innerList.clear();
		
innerList = new ArrayList<String>(); // 재할당

innerList.add("4");
innerList.add("5");
innerList.add("6");
list.add(innerList);
for (ArrayList<String> in : list) {	//[1, 2, 3] 
	System.out.println(in);		//[4, 5, 6]
}

 

리스트 이중배열 예제

 

		int num = 1;
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				innerList.add(String.valueOf(num));
				num++;
			}
			list.add(innerList);
			//innerList.clear();
			innerList = new ArrayList<String>(); // 새로 생성
		}
		for (ArrayList<String> in : list) {
			System.out.println(in);
		}

출력 결과 

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

 

반응형