반응형
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
- html
- string
- ArrayList
- Java
- 이클립스
- CSS
- IntelliJ
- table
- Maven
- json
- Array
- Visual Studio Code
- Eclipse
- 자바스크립트
- 이탈리아
- 인텔리제이
- CMD
- 테이블
- 배열
- date
- js
- vscode
- 문자열
- windows
- Button
- 자바
- input
- list
- 정규식
- javascript
Archives
- Today
- Total
어제 오늘 내일
[Java] ArrayList로 2차원 배열 만들기, 활용하기 본문
자바(Java)에서 데이터를 저장할 때 ArrayList는 많이 사용하는 컬렉션 클래스입니다.
그런데 가끔은 **2차원 배열(행렬처럼 행과 열이 있는 구조)**을 만들어야 할 때가 있습니다.
예를 들어,
- 학생별 과목 점수를 저장할 때
- 게시판 글과 댓글을 계층적으로 저장할 때
- 좌표나 매트릭스 구조를 다룰 때
이번 글에서는 ArrayList로 2차원 배열처럼 다루는 방법을 정리해 보겠습니다.
1. ArrayList 안에 ArrayList 넣기
자바에서 ArrayList는 기본적으로 1차원 구조입니다.
하지만 ArrayList 안에 또 다른 ArrayList를 넣으면, 마치 2차원 배열처럼 사용할 수 있습니다.
import java.util.*;
public class TwoDArrayListExample1 {
public static void main(String[] args) {
// 2차원 ArrayList 선언
ArrayList<ArrayList<Integer>> matrix = new ArrayList<>();
// 첫 번째 행
ArrayList<Integer> row1 = new ArrayList<>();
row1.add(1);
row1.add(2);
row1.add(3);
// 두 번째 행
ArrayList<Integer> row2 = new ArrayList<>();
row2.add(4);
row2.add(5);
row2.add(6);
// 행들을 matrix에 추가
matrix.add(row1);
matrix.add(row2);
// 출력
System.out.println(matrix);
}
}
실행 결과
[[1, 2, 3], [4, 5, 6]]
👉 matrix.get(0) → [1, 2, 3]
👉 matrix.get(1).get(2) → 6
즉, 행렬 구조처럼 접근 가능합니다.
2. for문으로 초기화하기
위처럼 일일이 만들 수도 있지만, 보통은 for문을 활용해서 초기화합니다.
import java.util.*;
public class TwoDArrayListExample2 {
public static void main(String[] args) {
int rows = 3;
int cols = 4;
ArrayList<ArrayList<Integer>> matrix = new ArrayList<>();
// 3행 4열 초기화 (모두 0으로)
for (int i = 0; i < rows; i++) {
ArrayList<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]]
👉 마치 int[3][4] 같은 2차원 배열을 ArrayList로 만든 것과 동일합니다.
3. 값 수정 및 접근
ArrayList의 특징은 크기가 유동적이라는 점입니다.
즉, 특정 값을 바꾸거나 행을 늘리거나 줄이는 것이 가능합니다.
import java.util.*;
public class TwoDArrayListExample3 {
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> matrix = new ArrayList<>();
// 2행 2열 초기화
for (int i = 0; i < 2; i++) {
ArrayList<Integer> row = new ArrayList<>();
for (int j = 0; j < 2; j++) {
row.add(0);
}
matrix.add(row);
}
// 값 수정
matrix.get(0).set(1, 10); // 0행 1열 값을 10으로 변경
matrix.get(1).set(0, 20); // 1행 0열 값을 20으로 변경
System.out.println(matrix);
}
}
실행 결과
[[0, 10], [20, 0]]
👉 set() 메서드로 원하는 위치의 값을 쉽게 변경할 수 있습니다.
4. 문자열 2차원 ArrayList
숫자뿐 아니라 문자열도 당연히 가능합니다.
import java.util.*;
public class TwoDArrayListExample4 {
public static void main(String[] args) {
ArrayList<ArrayList<String>> names = new ArrayList<>();
ArrayList<String> row1 = new ArrayList<>(Arrays.asList("홍길동", "김철수"));
ArrayList<String> row2 = new ArrayList<>(Arrays.asList("이영희", "박영수"));
names.add(row1);
names.add(row2);
System.out.println(names);
}
}
실행 결과
[[홍길동, 김철수], [이영희, 박영수]]
5. 정리
- ArrayList<ArrayList<T>> 형태로 선언하면 2차원 구조 가능
- add()로 행과 열을 자유롭게 추가
- get(i).get(j)로 값 접근
- set(i, j, value)로 값 수정 가능
- 일반 배열보다 크기 조절이 자유로움
반응형
'IT > Java' 카테고리의 다른 글
[Java 기초] 배열 안에 리스트(List) 담기 (0) | 2025.08.24 |
---|---|
[Java String] String.join() – 문자열 합치기 간단하게 (0) | 2025.08.23 |
[Java String] String.split() – 문자열을 원하는 기준으로 나누기 (0) | 2025.08.22 |
[Java StringBuilder] delete() / deleteCharAt() – 문자열 삭제하기 (0) | 2025.08.22 |
[Java 기초] Arrays.stream()으로 배열을 스트림으로 변환하기 (0) | 2025.08.22 |
Comments