-
[Java] CollectionProgramming/Java 2020. 3. 31. 23:03
List Interface
List Inteface 구조는 데이터가 저장된 순서를 보장하며, 중복된 데이터 저장이 가능하다.
데이터를 저장하면 인덱스가 자동으로 부여되고 부여된 인덱스를 통해 데이터의 검색 및 삭제가 가능하다.
선형적 구조를 갖는다.(1) ArrayList
- 저장 용량 보다 많은 데이터가 들어오면 자동으로 용량이 늘어난다.
- 중간에 데이터를 추가하거나 삭제할 경우에는 인덱스가 한 칸씩 뒤로 밀리거나 당겨진다.
(2) LinkedList
- LinkedList는 다음 데이터를 참조하는 포인터를 가지고 있다. 인접한 데이터를 링크하여 체인처럼 관리가 가능하다.
- 중간에 데이터를 추가/삭제하는 경우에 링크만 변경하면 되기 때문에 처리 속도가 빠르다.
(3) Vector
- ArrayList와 동일한 구조를 갖는다.
- Vector는 자동 동기화를 보장하므로 멀티스레드 환경에서 안정적인 사용이 가능하다.
- 싱글스레드 환경에서는 ArrayList가 성능이 더 좋다.
Queue Interface
Queue Interface 구조는 FIFO(First In First Out)대로 순서에 따른 자료의 입출력을 보장하는 자료구조이다.
(1) PriorityQueue
- PriorityQueue는 BIFO(Best In First Out) 구조로 우선순위를 결정하여 들어온 순서와 상관없이 우선순위가 높은 데이터가 먼저 나간다.
(2) ArrayDeque
- Dynamic Array를 이용한 Deque(Double-Ended Queue)
- 저장 용량 보다 많은 데이터가 들어오면 자동으로 용량이 늘어난다.
- 어떻게 사용하느냐에 따라 큐와 스택이 모두 될 수 있다.
Set Interface
Set Interface 구조는 데이터의 순서를 보장하지 않으며 중복을 허용하지 않는 자료구조이다.
(1) HashSet
- HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이다.
- Set 중 가장 높은 성능을 보인다.
- 데이터를 중복 저장 x, 순서 보장 x
(2) LinkedHashSet
- LinkedHashSet은 입력된 순서대로 데이터를 관리한다.
- 데이터 중복 저장 x, 순서 보장 o
(3) TreeSet
- TreeSet은 기본적으로 오름차순으로 데이터를 정렬하여 저장한다.
- HashSet 보다는 성능이 느리다.
- 데이터 중복 저장 x
출처
- https://medium.com/@logishudson0218/java-collection-framework-896a6496b14a
- https://blog.naver.com/heartflow89/220989831899
'Programming > Java' 카테고리의 다른 글
[Java] 객체타입 Set (0) 2020.09.10 [Java] StringBuilder class 함수 (0) 2020.07.03 [Java] 토막글 (0) 2020.03.11 [Java] Hash, HashMap (0) 2019.12.31 [Java] String 함수 (0) 2019.11.15