본문 바로가기
카테고리 없음

Vector와 List의 차이점

by 개발초보입니다 2024. 1. 3.

Vector와 List

Vector와 List는 모두 자료를 저장하고 관리하는 자료구조로, 컬렉션 프레임워크에서 제공되는 두 가지 주요 구현체 입니다. 이 둘은 데이터를 다르게 구조화 하며, 각각의 특성을 가지고 있습니다.


데이터 구조

Vector

  • 내부적으로 동적 배열을 사용합니다.
  • 원소들은 메모리 상에 연속적으로 저장되어 있어 랜덤 액세스가 빠릅니다.

List

  • 연결 리스트를 기반으로 하며, 각 노드는 데이터와 다음 노드를 가리키는 링크로 구성되어 있습니다.
  • 메모리 상에는 분산되어 저장됩니다.

크기의 가변성

Vector

  • 동적 배열이기 때문에 크기를 동적으로 조절할 수 있습니다.
  • 데이터를 삽입하거나 삭제할 때 배열의 크기를 조절할 수 있어 유연합니다.

List

  • 크기 또한 동적으로 조절 가능하지만, 특정 인덱스로 직접 엑세스 하는 데에는 모든 노드를 순회해야 하므로 비효율적일 수 있습니다.

성능 비교

Vector

  • 랜덤 액세스가 빠르며, 중간에 원소를 추가하거나 삭제할 때는 해당 인덱스 이후의 모든 원소를 이동시켜야 하므로 비효율적입니다.

List

  • 랜덤 엑세스는 순회가 필요하기 때문에 비교적 느립니다.
  • 중간에 원소를 추가하거나 삭제할 때는 해당 노드만 조작하면 되므로 효율적입니다.

활용 사례

Vector

  • 검색이나 랜덤 엑세스가 많이 발생하는 상황에서 사용됩니다.
  • 예를 들어, 대용량 데이터셋에서의 검색 연산이 있습니다.

List

  • 데이터의 삽입과 삭제가 빈번한 상황에서 효과적입니다.
  • 예를 들어 실시간 데이터 스트리밍에서의 큐 구현이 있습니다.

코드 예시

// Vector
Vector<String> vector = new Vector<>();
vector.add("Java");
vector.add("Python");
vector.remove(0);

// List - ArrayList
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
arrayList.remove(0);

// List - LinkedList
List<String> linkedList = new LinkedList<>();
linkedList.add("Java");
linkedList.add("Python");
linkedList.remove(0);

마무리

Vector와 List는 각각의 특성을 고려하여 사용해야 합니다.

랜덤 액세스가 중요한 경우에는 Vector를, 삽입과 삭제가 빈번한 경우에는 List를 선택하는 것이 좋습니다.

최적의 자료구조를 선택하면 성능을 향상시킬 수 있습니다.