본문 바로가기
CS/자료구조

자바 Collection

by DYII 2021. 4. 20.
728x90

List 

 - 동일한 데이터의 중복 허용

 - 데이터 저장 순서 유지 

 - 객체를 저장하면 부여되는 인덱스를 통해 객체의 주소 값을 참조할 수 있음.

 - 추가, 검색, 삭제 메소드가 있음

 

1. ArrayList

 - List 인터페이스의 구현 클래스

 - 배열과는 다르게 크기 변경 가능

 

* Vector

 - ArrayList와 동일한 내부 구조를 가지고 있음.

 - 동기화가 되어있지 않는 ArrayList와는 달리 동기화된 메소드로 구성되어 있어, 한 번에 하나의 스레드만 벡터의 메소드 호출 가능

  -> 멀티쓰레드일 경우, ArrayList는 개발자가 명시적으로 동기화 코드 추가해야 하며, 멀티쓰레드가 아닐 경우, ArrayList가 더 빠름

 

 

2. LinkedList

 - List 인터페이스의 구현 클래스

 - 양방향 포인터 구조로, 각각마다 인접하는 참조를 링크해서 체인처럼 관리함.

 

 

Set

 - 데이터의 저장 순서를 유지하지 않음

 - 같은 데이터의 중복 저장을 허용하지 않음

 - 전체 객체를 대상으로 한 번 씩 다 가져오는 반복자, Iterator를 제공함.

 

1. HashSet

 - 순서가 필요없는 데이터를 hash table에 저장함. 성능이 Set 중에서 가장 우수함.

 

2. TreeSet

 - 저장된 데이터의 값에 따라 정렬됨. red-black tree 타입

 

3. LinkedHashSet

 - 연결된 목록 타입으로 구현된 hash table에 데이터를 저장함.

 - 저장된 순서에 따라 값이 정렬되나 가장 느림

 

Map

 - 키와 값으로 구성된 Entry 객체를 저장하는 구조로 키와 값은 모두 객체임

 - 값은 중복이 허용되나 키는 중복이 안됨. 중복될 경우, 기존 값은 새로운 값으로 대체됨.

 

1. HashMap

 - 해시테이블을 사용한 클래스로 중복을 허용하지 않고 순서를 보장하지 않음

 

2. TreeMap

 - 숫자 > 알파벳 대문자 > 소문자 > 한글 순으로 키를 기준으로 데이터 정렬 가능

 

 

 

 

 

 

 

 

728x90