반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 테이블
- input
- Java
- Maven
- 정규식
- table
- windows
- Visual Studio Code
- json
- 이탈리아
- html
- Button
- ArrayList
- Array
- 자바스크립트
- vscode
- CSS
- string
- 이클립스
- 자바
- 인텔리제이
- Eclipse
- javascript
- 배열
- IntelliJ
- js
- 문자열
- list
- CMD
- date
Archives
- Today
- Total
어제 오늘 내일
[Java 기초] 리스트 안에 리스트 넣기 본문
자바(Java)에서 데이터를 저장할 때 ArrayList는 가장 많이 사용하는 컬렉션 클래스 중 하나입니다.
그런데 단순히 1차원 구조로만 쓰는 게 아니라, 리스트 안에 리스트(List<List>) 를 넣어 2차원 배열처럼 활용할 수도 있습니다.
예를 들어,
- 학생별 점수표 (행 = 학생, 열 = 과목 점수)
- 게시판 글(리스트)과 각 글에 달린 댓글(리스트)
- 행렬(Matrix) 데이터
이번 글에서는 자바에서 리스트 안에 리스트를 사용하는 방법을 여러 예제와 함께 정리해보겠습니다.
1. 기본 선언
리스트 안에 리스트는 다음과 같이 선언합니다.
List<List<Integer>> matrix = new ArrayList<>();
여기서 matrix는 리스트인데, 그 안의 각 원소가 또 다른 리스트입니다.
즉, matrix.get(i)는 리스트(행), matrix.get(i).get(j)는 하나의 값(열) 입니다.
2. 간단한 예제
import java.util.*;
public class ListInListExample1 {
public static void main(String[] args) {
List<List<Integer>> matrix = new ArrayList<>();
// 첫 번째 행
matrix.add(Arrays.asList(1, 2, 3));
// 두 번째 행
matrix.add(Arrays.asList(4, 5, 6));
System.out.println(matrix);
System.out.println("첫 번째 행: " + matrix.get(0));
System.out.println("두 번째 행, 세 번째 값: " + matrix.get(1).get(2));
}
}
실행 결과
[[1, 2, 3], [4, 5, 6]]
첫 번째 행: [1, 2, 3]
두 번째 행, 세 번째 값: 6
👉 matrix.get(1).get(2)는 2행 3열 값(=6)에 접근하는 방법입니다.
3. for문으로 2차원 리스트 초기화하기
리스트 안에 리스트는 크기가 자유로우므로, 보통은 for문으로 초기화합니다.
import java.util.*;
public class ListInListExample2 {
public static void main(String[] args) {
int rows = 3;
int cols = 4;
List<List<Integer>> matrix = new ArrayList<>();
// 3행 4열 생성 (모두 0으로 초기화)
for (int i = 0; i < rows; i++) {
List<Integer> row = new ArrayList<>();
for (int j = 0; j < cols; j++) {
row.add(0);
}
matrix.add(row);
}
System.out.println(matrix);
}
}
실행 결과
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
4. 값 수정 및 접근
리스트 안에 리스트는 유동적이므로, 특정 값을 바꾸거나 행/열을 자유롭게 추가할 수 있습니다.
import java.util.*;
public class ListInListExample3 {
public static void main(String[] args) {
List<List<String>> classroom = new ArrayList<>();
// 반별 학생 추가
classroom.add(new ArrayList<>(Arrays.asList("홍길동", "김철수")));
classroom.add(new ArrayList<>(Arrays.asList("이영희")));
// 값 수정
classroom.get(0).set(1, "박민수"); // 1반 2번째 학생 수정
// 학생 추가
classroom.get(1).add("최지훈"); // 2반에 학생 추가
System.out.println(classroom);
}
}
실행 결과
[[홍길동, 박민수], [이영희, 최지훈]]
5. 배열 안의 리스트 vs 리스트 안의 리스트
많이 헷갈리는 부분이 바로 이것입니다.
- 배열 안의 리스트 (List<T>[]) → 행 개수(배열 크기)는 고정, 각 리스트의 크기만 가변
- 리스트 안의 리스트 (List<List<T>>) → 행 개수도, 열 개수도 모두 가변
👉 즉,
- “반 개수는 3개로 고정, 학생 수는 반마다 다름” → 배열 안의 리스트
- “반 개수도 유동적, 학생 수도 유동적” → 리스트 안의 리스트
6. 정리
- 선언: List<List<T>>
- 값 접근: list.get(i).get(j)
- for문 초기화: 원하는 크기의 2차원 리스트를 쉽게 생성 가능
- 장점: 크기를 자유롭게 늘리거나 줄일 수 있어 배열보다 유연함
자바에서 List<List<T>> 구조를 사용하면, 배열보다 훨씬 유연한 2차원 데이터 구조를 만들 수 있습니다.
반응형
'IT > Java' 카테고리의 다른 글
[Java String] String.substring() – 문자열 자르기 (0) | 2025.08.25 |
---|---|
[Java StringBuilder] trimToSize() – 버퍼 최적화하기 (0) | 2025.08.24 |
[Java 기초] 배열 안에 리스트(List) 담기 (0) | 2025.08.24 |
[Java String] String.join() – 문자열 합치기 간단하게 (0) | 2025.08.23 |
[Java] ArrayList로 2차원 배열 만들기, 활용하기 (0) | 2025.08.23 |
Comments