<
Vector vs ArrayList vs LinkedList
>
🌠다음 포스팅🌠

객체지향 쿼리 JPQL
☄이전 포스팅☄

SpringBootServletInitializer 상속
List 인터페이스

Vector vs ArrayList vs LinkedList

특징

List 컬렉션의 하위 목록으로 객체를 일렬로 나열하는 구조이다. 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인텍스가 부여되고 인텍스로 객체를 검색, 삭제 기능까지 가능하다.

1. Vector

ArrayList와 동일한 내부구조를 가지고 있느며 선언하는 방식 또한 유사하다. Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드를 실핼 할 수 없고, 하나의 스레드가 완료된 후에야 다음 스레드를 작동 할 수 있다. 즉, 스레드 안정성이 보장이 되는 것이다.

2. ArrayList

List 인터페이스의 구현 클래스로 인덱스로 관리한다는 점에서는 배열과 유사하지만 배열 크기가 개변적이라는 점에서 차이를 보인다. 모든 종류의 객체 타입 <단일 객체=""> 저장이 가능하다.

인덱스는 0 부터 저장되며 중간 데이터(n)가 삭제되면 n+1 위치의 데이터들이 순차적으로 앞으로(-1) 당겨 지며 반대로 추가될 경우 +1 씩 인덱스 값이 증가한다. 때문에 빈번한 객체 변화가 일어나는 작업에서는 LinkedList를 사용하는 것이 좋다.

3. LinkedList

List 인터페이스의 구현 클래스 이지만 인덱스 형태의 데이터 관리를 하는 ArrayList 와는 다르게 인접 데이터를 링크 처럼 관리하는 부분 두 클래스의 차이를 알 수 있다. 데이터가 추가되거나 삭제될 경우 인덱스의 위치가 변하는 ArrayList 와는 다르게 인접 리스트와 재연결되는 LinkedList는 데이터의변화가 빈번한 곳에서 좋은 성능을 보인다.

Conclusion

구분 순차적 삭제/추가 중간 추가/삭제 검색 스레드
Vector 빠르다 느리다 빠르다 동기화
ArrayList 빠르다 느리다 빠르다 비동기화
LinkedList 느리다 빠르다 느리다 비동기화
Top
Foot