List - 자바 리스트

2024. 5. 23. 15:57김영한 Java/컬렉션 프레임워크

List 자료구조 

순서가 있고, 중복을 허용하는 자료 구조를 리스트라 한다. 자바의 컬렉션 프레임워크가 제공하는 가장 대표적인 자료 구조가 바로 리스트이다. 리스트와 관련된 컬렉션 프레임워크는 다음 구조를 가진다.

 

Collection 인터페이스

Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나이다. 이 인터페이스는 자바에서 다양한 컬렉션, 즉 데이터 그룹을 다루기 위한 메서드를 정의한다. Collection 인터페이스는 List, Set, Queue와 같은 다양한 하위 인터페이스와 함께 사용되며, 이를 통해 데이터를 리스트, 세트, 큐 등의 형태로 관리할 수 있다.

 

List 인터페이스

List 인터페이스는 java.util 패키지에 있는 컬렉션 프레임 워크의 일부다. List는 객체들의 순서가 있는 컬렉션을 나타내며, 같은 객체의 중복 저장을 허용한다. 이 리스트는 배열과 비슷하지만, 크기가 동적으로 변화하는 컬렉션을 다룰 때 유연하게 사용할 수 있다.

 

List 인터페이스는 ArrayList, LinkedList와 같은 여러 구현 클래스를 가지고 있으며, 각 클래스는 List 인터페이스의 메서드를 구현한다.

 

List 인터페이스의 주요 메서드

 

 

자바 ArrayList

자바 ArrayList의 특징

  • 배열을 사용해서 데이터를 관리한다.
  • 기본 CAPACITy 는 10이다.
    • CAPACITY를 넘어가면 배열을 50% 증가한다.
    • 10-15-22-33-49로 증가한다 (최적화는 자바 버전에 따라 달라질 수 있다.)
  • 메모리 고속 복사 연산을 사용한다.
    • ArrayList의 중간 위치에 데이터를 추가하면, 추가할 위치 이후의 모든 요소를 한 칸씩 뒤로 이동시켜야한다.
    • 자바가 제공하는 ArrayList는 이 부분을 최적화 하는데, 배열의 요소 이동은 시스템 레벨에서 최적화된 메모리 고속 복사 연산을 사용해서 비교적 빠르게 수행된다. 참고로 System.arraycopy()를 사용한다.

 

데이터 추가 - 한 칸씩 이동하는 방식

 

데이터 추가 - 메모리 고속 복사 연산 사용

 

자바 LinkedList

자바의 LinkedList 특징

  • 이중 연결 리스트 구조
  • 첫 번째 노드와 마지막 노드 둘다 참조

 

단일 연결 리스트

 

이중 연결 리스트

 

 

자바의 LinkedList 클래스