티스토리 뷰

JAVA

Java Collections Framework

parkho79 2019. 12. 23. 10:25
728x90



이번 포스팅에서는 Java collection 에 대해 알아보자.



Java Collection Framework (JCF)

Java 에서 collection 이란 데이터의 집합, 그룹을 의미한다.

JCF 는 이러한 데이터, 자료구조인 collection 과 이를 구현하는 class 를 정의하는 interface 를 제공한다.



Collection

 

◼ ArrayList

Arraylist 는 List 인터페이스를 구현하며 Array 데이터 구조를 기반으로 한다. (배열이면서 List 성격을 가짐)

데이터의 저장순서가 유지되고 null 을 포함한 중복도 허용한다.

단방향 포인터 구조로 데이터의 순차적 접근에는 용이하나 용량을 변경할 경우 효율이 떨어진다.

 

◼ Vector

ArrayList 와 거의 같지만 동기화가 보장된다.

하지만, 동기화가 단일 스레드에서는 성능 저하가 있어서 스레드가 아닌 환경에서는 거의 사용하지 않는다.

 

◼ LinkedList

노드 (데이터와 링크를 거는 필드) 와 노드로 이루어져 있는 연결 리스트.

LinkedList 요소는 배열과 같은 인접한 위치에 저장되지 않으며 포인터를 사용하여 서로 연결된다.

LinkedList 의 각 요소에는 LinkedList 의 다음 요소에 대한 참조 (주소 / 포인터) 가 있다.

ArrayList 보다는 메모리를 더 많이 차지 하지만, 삽입, 삭제가 많은 경우 유용하다.

 

◼ PriorityQueue

 

일반적인 Queue 는 제일 먼저 들어간 데이터가 가장 먼저 나오는 구조지만, PriorityQueue 의 경우 들어간 순서에 상관 없이 우선순위에 따라 나오는 구조이다.

 

◼ HashSet

HashSet 은 해시 테이블 (실제로는 HashMap 인스턴스)을 기반으로 Set 인터페이스를 구현.

저장되는 데이터 순서를 알 수 없고, Set 계열에서 가장 빠르다.

기본적으로 동기화되지 않지만, 명시적으로 동기화 할 수 있다.

 

◼ TreeSet

TreeSet 은 HashSet 과 유사하지만, Red-Black 트리를 이용하기 때문에 항상 자동정렬되어 있다.

데이터가 항상 정렬이 완성된 상태이기 때문에 검색에 매우 유용하다.

 

◼ LinkedHashSet

LinkedHashSet 도 HashSet 및 TreeSet과 유사하지만, 입력된 순서대로 데이터를 관리한다.

 



Map

 

◼ Hashtable

Hashtable 은 동기화를 지원하며 HashMap 보다는 느리다.

키와 값으로 null 허용하지 않는다.

 

◼ LinedHashMap

HashMap 을 상속받는다.

Map 에 있는 엔트리들의 연결 리스트를 유지하여 입력한 순서대로 반복 가능하다.

 

◼ HashMap

Map 인터페이스를 구현하기 위해 해시 테이블을 사용한다<key, value=""><k, v="">.</k,></key,>

중복을 허용하지 않고 순서를 보증하지 않는다.

동기화되지 않고 키와 값으로 null 을 허용한다.

 

◼ TreeMap

TreeMap 은 Red-Black 트리 기반 NavigableMap 구현.

정렬된 순서로 키와 값을 저장하여 검색이 빠르다.

하지만, 정렬 때문에 저장시간이 다소 오래 걸린다.



728x90

'JAVA' 카테고리의 다른 글

Math 반올림, 올림, 내림 등 주요 메소드 정리  (0) 2019.06.20
JAVA data type  (0) 2019.01.30
StringUtils (V ~ Z)  (0) 2018.12.21
StringUtils (S ~ U)  (0) 2018.12.21
StringUtils (P ~ R)  (0) 2018.12.21
댓글