[Java] Collection Interface란?

wakeup Lee·2023년 3월 21일
0

자바

목록 보기
5/6

Collections Interface란?

오라클의 JAVA Documentation에 따르면 컬렉션 프레임워크에 구성된 인터페이스로 계층 구조의 루트 인터페이스인 Collection을 기준으로 Set, List, Queue, Deque 인터페이스를 상속하고 있다.

Java플랫폼에서는 Collection 인터페이스를 직접적으로 구현을 제공하고 있지는 않지만, 상속하고 있는 하위 인터페이스를 통해 구현을 제공하고 있다. JDK 8 이상부터는 순차와 병렬 스트림을 얻기 위해 Stream의 stream() 메서드를 제공한다.

1. Set Interface

순서를 유지하지 않고 중복된 값을 허용하지 않는 개체의 집합으로 HashSet과 TreeSet, LinkedHashSet 클래스를 상속한다.
HashSet과 LinkedHashSet 클래스는 삽입된 순서에 따라 요소를 정렬하고, TreeSet 클래스는 값에 따라 요소를 정렬한다.

  • HashSet 클래스의 특징으로 null을 허용하고 동기화되지 않는다는 특징이 있으며, 여러 스레드가 HashSet을 동시에 엑세스할 때 스레드 중 하나가 외부에서 동기화되어야 한다. 또한 데이터를 저장할 때 hash값을 저장한다.
  • LinkedHashSet 클래스 특징으로는 HashSet과 다르게 이중 연결 목록을 유지하며, 요소가 집합에 다시 삽입되더라도 순서에는 영향을 받지 않는다는 특징이 있다.

2. List Interface

순서가 유지되고 중복된 값을 허용하는 개체의 집합으로 사용자는 요소가 저장되는 위치를 제어할 수 있다. ArrayList와 LinkedList, Stack 클래스를 상속한다. 또한 순서가 보장되는 인터페이스로 index값을 통해 값을 호출 할 수 있다.

  • ArrayList 클래스는 인덱스로 개체들을 관리한다는 점에서 배열과 유사하다. null을 포함한 모든 요소를 허용하고, 목록을 저장하기 위해 내부적으로 사용되는 배열의 크기를 조작하는 메서드를 제공한다.
  • LinkedList 클래스는 모든 요소들의 연결이 이루어져 있어 순방향, 역방향으로 탐색한다. 이중 연결 목록을 유지하고, 삽입삭제가 빈번하면 해당 클래스를 이용하는게 낫다.

3. 시간 복잡도(Big-O 표기법)

[참고자료]
https://docs.oracle.com/javase/8/docs/technotes/guides/collections/

profile
백엔드 개발자

0개의 댓글