Java List

Yono·2024년 6월 28일
post-thumbnail

자바 프로그래밍에서 효율적인 데이터 관리를 위해 다양한 자료구조를 사용할 수 있습니다. 각 자료구조는 고유의 특성과 장점을 가지고 있으며, 상황에 맞게 선택하여 사용하면 성능과 효율성을 극대화할 수 있습니다.

자바에서 List 인터페이스는 순서가 있는 컬렉션을 나타냅니다. ArrayList와 LinkedList가 대표적인 구현체입니다.

ArrayList
ArrayList는 내부적으로 동적 배열을 사용하여 구현됩니다.

특징:

  • 랜덤 접근 속도: 배열 기반이므로 인덱스를 통한 접근 속도가 매우 빠릅니다. (O(1))
  • 삽입/삭제: 배열 크기를 조정하거나 요소들을 이동해야 하기 때문에, 중간에서의 삽입/삭제가 느립니다. (O(n))
  • 동적 크기 조정: 내부 배열의 크기가 꽉 차면, 더 큰 배열을 할당하고 기존 배열의 요소들을 복사합니다.
List<String> arrayList = new ArrayList<>();
arrayList.add("Hello");
arrayList.add("World");
System.out.println(arrayList.get(0)); // 출력: Hello

LinkedList
LinkedList는 이중 연결 리스트로 구현됩니다.

특징:

  • 랜덤 접근 속도: 인덱스를 통한 접근 속도가 느립니다. (O(n))
  • 삽입/삭제: 노드 간의 참조를 변경하는 것으로 이루어지기 때문에, 중간에서의 삽입/삭제가 빠릅니다. (O(1))
  • 메모리 사용: 각 요소가 포인터를 추가로 저장하기 때문에 메모리 사용량이 더 많습니다.
List<String> linkedList = new LinkedList<>();
linkedList.add("Hello");
linkedList.add("World");
System.out.println(linkedList.get(0)); // 출력: Hello

Array

자바에서 배열은 고정된 크기를 가지며, 동일한 타입의 요소들을 저장할 수 있는 자료구조입니다.

특징:

  • 고정된 크기: 배열을 생성할 때 크기를 지정해야 하며, 이후에는 변경할 수 없습니다.
  • 랜덤 접근 속도: 인덱스를 통한 접근 속도가 매우 빠릅니다. (O(1))
  • 메모리 연속성: 메모리 상에 연속적으로 저장되어 빠른 접근과 캐시 효율성을 가집니다.
  • 타입: 동일한 타입의 요소들만 저장할 수 있습니다.
int[] array = new int[5];
array[0] = 1;
array[1] = 2;
System.out.println(array[0]); // 출력: 1
특성ArrayListLinkedList
랜덤 접근 속도O(1)O(n)
삽입 속도O(n)O(1)
삭제 속도O(n)O(1)
메모리 사용량낮음높음
동적 크기 조정OX
구현 방식동적 배열이중 연결 리스트

위의 자료구조들을 적절히 사용하면, 자바에서 데이터 관리와 처리를 효율적으로 수행할 수 있습니다. 각 자료구조의 특성을 잘 이해하고, 상황에 맞게 선택하는 것이 중요합니다. 다음 글에서는 Map 인터페이스에 대해 자세히 알아보겠습니다.

profile
Java,Spring,JavaScript

0개의 댓글