[JAVA] Array, List, ArrayList 개념 정리

2023. 10. 23. 13:38JAVA

알고리즘 문제를 풀다 보면 중간중간 사용방법을 까먹고 다시 찾아보게 된다. 파이썬으로 할때와는 다르게 배열과 리스트의 구분이 명확히 되어있고 사용법 또한 다르다. (배열이라는 개념이 없음)

 

배열 (Array)
  • 배열은 고정된 크기의 데이터 구조이다. 한번 생성 후 크기 변경이 불가능하다.
  • 배열은 기본 데이터 유형 또는 객체를 저장해서 사용할 수 있고 해당 배열에는 동일한 유형의 요소들이 들어가야 한다.
  • 배열의 요소에 직접 액세스 할 수 있으며 인덱스를 이용해 특정 요소에 접근 가능하다.
  • 배열의 크기를 변경하려면 새로운 배열을 생성해 데이터를 복사해 할당해야 한다.
// 배열을 선언하고 크기를 지정
int[] myArray = new int[5]; // 크기가 5인 정수형 배열을 생성

// 배열에 값 할당
myArray[0] = 10;
myArray[1] = 20;
myArray[2] = 30;
myArray[3] = 40;
myArray[4] = 50;

// 배열 값 읽기
int value = myArray[2]; // value에는 30이 저장됨

// 배열 크기 확인
int size = myArray.length; // size에는 배열의 크기인 5가 저장됨

// 오름차순 정렬
Arrays.sort(myArray);

// 내림차순 정렬
Arrays.sort(myArray, Collections.reverseOrder());

// 배열 값 교체
myArray[0] = 4;

 

리스트 (List)
  • 리스트는 동적 크기의 데이터 구조로 크기를 동적으로 조절할 수 있다.
  • 리스트는 객체를 저장하는데 사용되며, 요소들이 다양한 유형일 수 있다.
  • 리스트 인터페이스는 자바에서 제공되고, ArrayList, LinkedList 등이 있다.
  • 리스트는 요소를 추가, 삭제, 검색 및 정렬이 가능한 메서드들을 제공한다.

 

// ArrayList를 생성하고 값을 할당
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(10);
arrayList.add(20);
arrayList.add(30);
arrayList.add(40);

// 인덱스 1에 15값 추가 20 앞에 생성
arrayList.add(1, 15);

// 인덱스 1에 있는 요소 삭제 (20 삭제)
arrayList.remove(1);

// 값이 30인 요소 삭제
arrayList.remove(Integer.valueOf(30));

// 값 20의 인덱스 검색 (1 반환)
int index = arrayList.indexOf(20);

// 오름차순 정렬
Collections.sort(arrayList);

// 내림차순 정렬
Collections.sort(arrayList, Collections.reverseOrder());

// ArrayList를 배열로 변환
Integer[] array = arrayList.toArray(new Integer[0]);

// 배열 출력
for (Integer value : array) {
    System.out.println(value);
}