Interface supports an ordered sequence of elements
Vector, ArrayList, LinkedList
Vector
처음부터 만들어져서 지금까지 유지되어 온 리스트 계열의 컬렉션
특별히 크기를 지정하지 않을 경우 사이즈를 늘릴 경우 두 배 씩 늘린다.
synchronised
ArrayList
사이즈를 늘리면 50% 씩 늘린다.
synchronised를 지원하지 않아서 벡터보다 빠르다.
리스트 인터페이스를 구현했기 때문에 기본적으로 순서를 가지고 element에 인덱스를 부여한다.
랜덤하게 element를 access할 경우 인덱스만으로 빠르게 접근가능하다.
추가나 삭제는 인덱스를 재배치해야해서 속도가 현저히 느릴 수 있다.
LinkedList
리스트 계열이지만 노드 개념으로 앞뒤 element가 연결되어 있다.
앞 element를 head, 뒤 element를 tail 이라고 한다.
추가 삭제할 경우 head와 tail 만 바꾸면 된다.
삽입 삭제는 쉽지만 읽는 건 느리다.
왜냐하면 인덱스 기능을 사용하지 않아서 처음부터 element를 확인하는 순차적인 접근을 이용하기 때문이다.
일반적으로 단방향성을 가지고 있어서 인덱스를 이용하여 자료를 검색하는 어플리케이션에는 부적합.
리스트 계열의 컬렉션은 비슷하나 상황에 맞게 사용해야한다.
정리
Vector
synchronised elements, huge size increase
Array List
better for random accessing elements by index, slow for add/remove
Linked List
large number of add/remove operation but rarely random access of elements
[JAVA Collections API] 자료구조 요약: 구조/성능/용도 :: 센의 백과사전 블로그 (tistory.com)
'컴퓨터공학 > Java' 카테고리의 다른 글
CS> SimpleDataFormat 은 무엇인가? (0) | 2021.07.04 |
---|---|
CS> Enumeration 과 Iterator 의 차이점 (0) | 2021.07.04 |
CS> try catch에서 System.exit 부르면 어떻게 될까? finally 이 실행될까? (0) | 2021.07.04 |
CS> byte stream 과 character stream 의 차이점 (0) | 2021.07.04 |
CS> Throw 와 Throws 의 차이점은 무엇인가? (0) | 2021.07.03 |