소프트웨어/Java

[Java] 배열과 리스트의 차이점 : 어떤 상황에서 사용해야 하는지

정보통신 고심이 2023. 9. 16. 16:16

배열과 리스트는 데이터를 저장한다는 점이 유사하여 

데이터를 저장할 때 배열을 사용해야 하는지, 리스트를 사용해야 되는지 헷갈려서 정리 해보려고 한다.

자바를 입문하는 단계로 잘못된 점을 알려주신다면 감사한 마음으로 배우겠습니다. 

 

상황 요약 

데이터의 크기가 고정되어 있을 때, 빠른 인덱스 기반의 접근이 필요할 때 -> 배열 사용

데이터의 크기가 변동될 가능성이 있을 때, 데이터의 중복 저장, 순서 보장 등의 특정한 조건이 필요할 때, 컬렉션 프레임의 메서드나 기능을 활용해야 할 때 -> 리스트 사용

 

 

Java에서 배열과 리스트는 데이터를 저장하고 관리하는 데 사용된든 두 가지 주요 데이터 구조이다.

- 배열(Array) 

크기 고정 : 배열의 크기는 선언시에 고정, 나중에 크기를 변경X

기본 및 객체 타입 모두 사용 가능 : int[], char[], Object[] 등 모든 타입의 데이터를 저장 가능

인덱스 접근 : 배열의 원소에는 인덱스를 통해 빠르게 접근 가능

 

사용 상황

1) 데이터의 크기가 고정되어 있을 때

2) 빠른 인덱스 기반의 접근이 필요할 때

 

+ 예시 : 배열을 설정, 반복문으로 배열의 원소를 입력 받아 저장

  static void q8() {
    // 배열 설정
    int[] Answer = new int[3];
    int[] Guess = new int[3];

    // 정답값과 추측값 3개씩 입력받아 배열에 저장하기
    Scanner sc = new Scanner(System.in);
    System.out.print("정답값 3개 입력: ");
    for (int i=0; i<Answer.length; i++)
      Answer[i] = sc.nextInt();
	...
}

 

- 리스트(List)

1) 크기 동적 : 리스트의 크기는 동적으로 변할 수 있고, 데이터를 추가하거나 제거할 대 크기가 자동으로 조절

2) 객체 타입만 저장 가능 : 기본 타입(int, char등) 직접 저장X, 대신 wrapper클래스 (Integer, Character 등)을 사용해야 한다.

3) 컬렉션 프레임워크의 일부 : Java의 컬렉션 프레임워크에 포함되어 있으므로 다양한 메서드와 함께 사용 가능

 

사용 상황

1) 데이터의 크기가 변동될 가능성이 있을 때

2) 컬렉션 프레임워크의 메서드나 기능을 활용해야 할 때

3) 데이터의 중복 저장, 순서 보장 등의 특정한 조건이 필요할 때

 

리스트 사용 예시는 문제 풀고 추가할 예정 

 

 

출처 : chatGPT