Lined Notebook

[Java] 04. Vetor vs ArrayList vs LinkedList 간단 정리

by ymkim

01. Vetor vs ArrayList vs LinkedList

  • List는 모든 프로그래밍 언어에서 가장 유용한 자료구조이다
  • List기존 Array(배열) 자료구조의 단점, 한계를 극복하기위해 나온 자료구조다
  • Array(배열) 자료구조를 기반으로 만들어졌다 봐도 무방하다

01. Vetor

public class VectorTest {
		
    public String [] Array = new String[10];
    public Vector<String> vector = new Vector<Strign>();

    @Test
    public void collectionTest() {
        System.out.println("Array = " + array.length);
        System.out.println("Vector = " + vector.capacity());
    }
}
  • Java 1.0 부터 지원되며, Java 1.2 이상부터는 이전 버전과의 호환을 위해서 주로 사용된다
  • Vetor는 다수의 Thread에 대한 동기화 처리를 보장하기에, 한 번에 하나의 스레드만 작업이 가능하여 안정성이 보장됩니다.
    • 모든 메서드에 synchronized 가 붙어있음
  • Vector의 경우 공간이 모자를 때는 모자른 공간의 2배 공간을 확보하기 때문에, 메모리를 많이 잡아먹는다는 단점 역시 존재

02. ArrayList

  • Array라는 이름이 있는 것 처럼 인덱스를 가지고 있어 조회에 용이하다는 장점을 가진다
  • 하지만 데이터를 추가/삭제 하는 경우에는 빠진 공간만큼 한칸씩 당기거나 뒤로 밀어야 한다는 단점을 가진다
  • 다수 Thread에 대해 동기화 보장하지 않으며, 개발자가 Thread-safe에 대한 고려를 해야합니다.
  • 공간이 모자른 경우 임시 배열만들어 데이터를 복사한다는 특징을 가지고 있습니다.

03. LinkedList

  • LinkedList노드의 연결 리스트 구조를 가지고 있습니다.
  • 데이터 조회의 경우 헤드(Head) 노드부터 테일(Tail) 노드까지 순회를 해야 하기에 속도가 떨어진다
  • 데이터 추가/삭제의 경우 노드가 가르키는 다음 노드의 주소만 변경하면 되기에 추가/삭제 성능은 좋다
  • ArrayList와 마찬가지로 쓰레도 동기화를 보장하지 않으며, 개발자가 Thread-safe에 대한 고려를 해야한다

04. 동기화

  • 멀티 스레드 환경에서 동기화 처리는 중요한 부분
  • 동기화란 복수의 쓰레드로부터 데이터추가 혹은 삭제가 일어났을 때 내부 데이터는 안전하게 처리되도록 하는 것

참고 자료

 

Java의 LinkedList와 ArrayList에 대한 비교 · 안녕 프로그래밍

리스트는 모든 프로그래밍 언어에서 가장 유용한 자료구조 중의 하나이다. LinkedList와 ArrayList는 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을

www.holaxprogramming.com

 

[JAVA]Vector vs ArrayList vs LinkedList

Vector vs ArrayList vs LinkedList 특징 List 컬렉션의 하위 목록으로 객체를 일렬로 나열하는 구조이다. 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인텍스가 부여되고 인텍스로 객체를 검

languagefight.tistory.com

 

자바 ArrayList와 LinkedList는 무엇인가? 성능 비교 (+ Vector..?)

ArrayList와 LinkedList, 그리고 Vector은 List interface를 구현한 클래스이다. 이 중 Vector은 혼자 뒤에 List가 없는데. Collections framework(+List Interface)가 생기기 전에 만들어진 클래스라 그렇다. ArrayList와 거의

7357.tistory.com

 

'Java' 카테고리의 다른 글

[Java] 03. Cookie & Session?  (0) 2024.04.09
[Java] 02. String / StringBuffer / StringBuilder 차이  (0) 2024.04.09
[Java] 01. List vs Set vs Map 차이점  (0) 2024.04.09

블로그의 정보

기록하고, 복기하고

ymkim

활동하기