어제 오늘 내일

[Java 기초] 배열 안에 리스트(List) 담기 본문

IT/Java

[Java 기초] 배열 안에 리스트(List) 담기

hi.anna 2025. 8. 24. 00:24

자바(Java)에서 데이터를 저장할 때 보통 배열(Array)이나 ArrayList를 사용합니다.
그런데 상황에 따라 **배열 안에 여러 개의 리스트(List)**를 담아야 할 때가 있습니다.

예를 들어,

  • 반(학급)별 학생 명단을 저장할 때
  • 카테고리별 상품 목록을 저장할 때
  • 행렬처럼 정해진 행 개수는 있지만, 열 개수는 유동적인 구조가 필요할 때

이럴 때는 배열 안에 리스트를 담는 방식을 사용할 수 있습니다.

 


 

1. 기본 구조

리스트(List)는 참조 타입이므로 배열에 담을 수 있습니다.
즉, List<String>[] 또는 ArrayList<String>[] 형태로 선언하면 됩니다.

import java.util.*;

public class ArrayInsideListExample1 {
    public static void main(String[] args) {
        // 배열 안에 ArrayList를 담기
        List<String>[] groups = new ArrayList[3];

        // 각 배열 요소에 새로운 리스트 할당
        groups[0] = new ArrayList<>();
        groups[1] = new ArrayList<>();
        groups[2] = new ArrayList<>();

        // 값 추가
        groups[0].add("홍길동");
        groups[0].add("김철수");

        groups[1].add("이영희");

        groups[2].add("박영수");
        groups[2].add("최민수");
        groups[2].add("한지민");

        // 출력
        System.out.println(Arrays.toString(groups));
    }
}

실행 결과

[[홍길동, 김철수], [이영희], [박영수, 최민수, 한지민]]

👉 배열의 크기(행 개수)는 고정되지만, 각 리스트의 크기(열 개수)는 자유롭게 변함을 알 수 있습니다.

 


 

2. 반복문으로 초기화하기

보통은 for문을 사용해서 배열 안의 리스트를 초기화합니다.

import java.util.*;

public class ArrayInsideListExample2 {
    public static void main(String[] args) {
        int n = 3; // 배열 크기
        List<Integer>[] numbers = new ArrayList[n];

        // 초기화
        for (int i = 0; i < n; i++) {
            numbers[i] = new ArrayList<>();
        }

        // 값 넣기
        numbers[0].add(1);
        numbers[0].add(2);

        numbers[1].add(3);

        numbers[2].add(4);
        numbers[2].add(5);
        numbers[2].add(6);

        // 출력
        for (int i = 0; i < n; i++) {
            System.out.println("리스트 " + i + ": " + numbers[i]);
        }
    }
}

실행 결과

리스트 0: [1, 2]
리스트 1: [3]
리스트 2: [4, 5, 6]

 

 


 

3. 배열 안의 리스트 vs 리스트 안의 리스트

많은 입문자들이 헷갈리는 부분이 있습니다.

  • 리스트 안에 리스트 → List<List<T>> (자유롭게 크기 늘어남 → 2차원 구조에 자주 사용)
  • 배열 안에 리스트 → List<T>[] (행 개수는 고정, 열 개수만 유동적)

👉 즉,

  • “반(클래스) 개수는 3개로 고정, 학생 수는 반마다 다름” → 배열 안에 리스트
  • “반 개수도 유동적이고, 학생 수도 유동적” → 리스트 안에 리스트

 


 

4. 문자열 예제

문자열 데이터도 동일하게 다룰 수 있습니다.

import java.util.*;

public class ArrayInsideListExample3 {
    public static void main(String[] args) {
        List<String>[] categories = new ArrayList[2];

        categories[0] = new ArrayList<>(Arrays.asList("노트북", "모니터"));
        categories[1] = new ArrayList<>(Arrays.asList("핸드폰", "태블릿", "스마트워치"));

        System.out.println(Arrays.toString(categories));
    }
}

실행 결과

[[노트북, 모니터], [핸드폰, 태블릿, 스마트워치]]

 

 


 

5. 정리

  • List<T>[] 형태로 배열 안에 리스트를 담을 수 있다.
  • 배열 크기는 고정, 리스트 크기는 가변적이다.
  • for문으로 초기화하면 편리하다.
  • 고정된 행, 유동적인 열 구조에 적합하다.

 

반응형
Comments