728x90
코테를 풀다보면 당연히 2차원 배열 형태의 저장공간이 필요할 때가 있고 (내가 그랬고)
이 때, 배열의 각 인덱스 공간이 동적인 사이즈를 가진 배열을 원할 때가 있을 수 있다.
이 때, 배열의 각 행은 고정, 열크기가 가변적인 Array of List 형태를 만들면 해결될 거다.
만약 여러 개의 줄에 서 있는 사람들의 키를 저장하고 출력하는 프로그램이 있다고 하면, 줄의 길이는 정해져 있지 않으므로
정적배열이 아닌 가변길이의 리스트로 진행해야 할 것이다.
import java.util.*;
public class Arraylist {
public static void main(String[] args)
{
int n = 5;
// 변수 정의 선언
ArrayList<Integer>[] al = new ArrayList[n];
// 각 행에 ArrayList 객체를 할당
for (int i = 0; i < n; i++) {
al[i] = new ArrayList<Integer>();
}
// n번째 줄에 선 사람들의 키를 저장한다고 치면..
al[0].add(170);
al[0].add(165);
al[1].add(182);
al[2].add(193);
al[2].add(155);
al[2].add(172);
al[3].add(162);
al[4].add(120);
al[4].add(150);
for (int i = 0; i < n; i++) {
List<Integer> line = al[i];
System.out.print((i+1) + "th line : ");
for (int j = 0; j < line.size(); j++) {
System.out.print(line.get(j) + "cm ");
}
System.out.println();
}
}
}
ArrayList<Integer>[] al = new ArrayList[n];
dataType이 ArrayList<Integer>인 array 형태로 메모리를 할당한다.
for (int i = 0; i < n; i++) { al[i] = new ArrayList<Integer>(); }
그 후, 각 행을 순회하며 행마다 동적인 리스트 객체를 할당한다.
이로써 각 행에선 가변길이를 가질 수 있는 리스트를 참조할 수 있다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[java] Date, LocalDateTime 사용법 간단 정리 (0) | 2022.04.24 |
---|---|
다형성: 우리는 왜 List list = new ArrayList(); 라고 쓸까? (0) | 2022.04.04 |
[Java] 정수 콤마 넣기 (천원 단위 변환, 금액 변환) (0) | 2021.08.02 |
[Java] 문자열 붙이기에 반드시 StringBuilder 를 안해도 된다 (1) | 2021.06.05 |
[Java] Java Servlet Cookie 생성 및 관리 (0) | 2021.05.13 |