본문 바로가기
Java Study

List와 ArrayList

by xogns93 2024. 8. 16.

1. List 인터페이스

  • 정의: List는 Java의 컬렉션 프레임워크에 속하는 인터페이스입니다. List는 순서가 있는 요소의 컬렉션을 나타내며, 중복된 요소를 허용합니다. List 인터페이스는 컬렉션에서의 위치를 기반으로 요소에 접근하고 조작할 수 있는 다양한 메서드를 정의합니다.
  • 주요 특징:
    • 순서 유지: List는 요소들이 삽입된 순서를 유지합니다. 예를 들어, 리스트에 요소가 [A, B, C] 순서로 삽입되었다면, 이 순서는 유지됩니다.
    • 중복 허용: List는 동일한 요소가 여러 번 포함될 수 있습니다.
    • 인덱스 기반 접근: List 인터페이스는 인덱스를 사용하여 특정 위치의 요소를 빠르게 접근할 수 있는 메서드(get(int index))를 제공합니다.
  • 구현체: List 인터페이스를 구현하는 여러 클래스가 있습니다. 대표적인 구현체로는 ArrayList, LinkedList, Vector 등이 있습니다. 각 구현체는 내부적으로 요소를 저장하고 관리하는 방법이 다르기 때문에 성능 특성이 다릅니다.

2. ArrayList 클래스

  • 정의: ArrayList는 List 인터페이스를 구현한 구체적인 클래스입니다. 내부적으로 배열을 사용하여 요소를 저장합니다.
  • 주요 특징:
    • 동적 크기 조정: ArrayList는 초기 용량이 고정되어 있지만, 배열이 가득 차면 자동으로 크기가 동적으로 조정됩니다.
    • 빠른 요소 접근: 배열 기반이기 때문에, 인덱스를 사용하여 특정 위치의 요소에 접근하는 것이 매우 빠릅니다(시간 복잡도 O(1)).
    • 요소 삽입/삭제: 요소를 리스트의 중간에 삽입하거나 삭제하는 작업은 비효율적일 수 있습니다. 모든 후속 요소를 한 칸씩 이동해야 하기 때문에 시간 복잡도가 O(n)입니다.

 

 

List와 ArrayList의 차이점

  • List는 인터페이스이고, ArrayList는 클래스입니다. 따라서 ArrayList는 List 인터페이스의 구체적인 구현체 중 하나입니다.
  • List 인터페이스 다양한 구현체를 지원합니다(ArrayList, LinkedList, Vector 등). 반면, **ArrayList**는 배열 기반의 리스트를 제공하는 특정한 구현체입니다.

결론

  • **List**는 순서가 있는 컬렉션의 인터페이스로, 중복 요소를 허용하며 인덱스를 사용한 요소 접근을 제공합니다. 다양한 구현체를 통해 다양한 리스트 자료구조를 사용할 수 있습니다.
  • **ArrayList**는 List 인터페이스를 구현한 대표적인 클래스이며, 내부적으로 배열을 사용해 요소를 저장하고 관리합니다. 빠른 요소 접근이 가능하지만, 중간에 삽입/삭제가 빈번한 경우 성능 저하가 있을 수 있습니다.

Java에서 컬렉션을 사용할 때는 List 인터페이스를 사용해 유연성을 유지하고, 필요에 따라 적절한 구현체(ArrayList, LinkedList 등)를 선택하는 것이 좋은 방법입니다.

'Java Study' 카테고리의 다른 글

제네릭 타입 매개변수(T)와 와일드카드(?)의 역할  (0) 2024.08.19
바운딩과 와일드카드의 차이  (0) 2024.08.19
자바(JAVA)의 예외(Exception)  (0) 2024.07.19
LinkedList  (0) 2024.07.18
Collection 인터페이스  (0) 2024.07.18