[JAVA] 컬렉션
JCF
- Java Collections Framework
- 여러 원소를 하나의 그룹으로 묶어 관리해주는 객체
- 컬렉션을 표현하고 다루기 위한 통합 프레임워크
- 클래스와 인터페이스의 집합
- 다양한 방식으로 저장, 정렬, 검색, 수정하는 도구를 제공
- 클래스와 인터페이스의 집합
- 컬렉션을 일관된 방법으로 다룰 수 있음
- 표준화된 인터페이스 : 컬렉션의 기능을 표현
- 어떻게 표현되는 지와 상관없이 일관성 있게 다룸
- 클래스 : 인터페이스를 구현한 클래스를 제공
- 표준화된 인터페이스 : 컬렉션의 기능을 표현
- JCF의 인터페이스
- Set : 순서는 의미가 없으며 중복을 허용하지 않는 자료구조
- List : 중복을 허용하고 순서에 의미가 있는 자료구조
- Queue : List와 유사하나 원소의 삽입/삭제가 FIFO 방식
- Map : 원소가 <Key, value>의 형태이며 키는 유일해야 함
- Set : 순서는 의미가 없으며 중복을 허용하지 않는 자료구조
- JCF의 인터페이스와 클래스
- 제네릭 타입. 다루는 자료의 유형을 지정해야 함
- 제네릭 타입. 다루는 자료의 유형을 지정해야 함
Set | List | Queue | Map | |
해싱 | HashSet | HashMap | 배열 | ArrayList Vector(Stack) |
연결리스트 | LinkedList | LinkedList | 해싱+연결리스트 | LinkedHashSet | LinkedHashMap |
SortedSet | SortedMap | |||
트리 | TreeSet | TreeMap |
- Collection
인터페이스 메소드
- boolean add(E e)
- boolean addAll(Collection<? extends E> c)
- boolean remove(Object o)
- boolean removeAll(Collection<?> c)
- boolean retainAll(Collection<?> c)
- void clear
- 원소 탐색 메소드
- boolean contains(Object o)
- boolean containsAll(Collection<?> c)
- boolean isEmpty()
- boolean contains(Object o)
- 기타 메소드
- int size()
- int hashCode()
- Object[] toArray()
- Iterator
iterator() - boolean equals(Object)
- int size()
- boolean add(E e)
ArrayList
- List 인터페이스를 구현한 클래스
- 크기 조절이 가능한 배열로 구현
- 크기 조절이 가능한 배열로 구현
- 같은 자료가 중복될 수 있으며, 입력된 순서대로 관리됨
- 특정 위치의 자료를 참조할 수 있음
- 특정 위치의 자료를 참조할 수 있음
- List 인터페이스를 살펴봐야 함
- 메소드
- boolean add(E e), void add(index, E element)
- boolean remove(Object o), E remove(int index)
- E get(int index), E set(int index, E element)
- int indexOf(Object o), int lastIndexOf(Object o)
- boolean add(E e), void add(index, E element)
- List
클래스
- 순서가 있고 중복을 허용하는 구조
- 원소를 순차적으로 처리하는 구조
- 첨자에 의한, 특정 위치의 원소 처리가 가능
- 첨자에 의한, 특정 위치의 원소 처리가 가능
- 순서가 있고 중복을 허용하는 구조
Iterator 인터페이스
- 컬렉션에 저장된 원소를 차례대로 다룰 수 있음
- 다음 메소드를 제공
- boolean hasNext(), E next(), void remove()
- boolean hasNext(), E next(), void remove()
- HashSet, ArrayList, LinkedList 등에서 Iterator 객체를 리턴하는 메소드가 정의됨
LinkedList 클래스
- ArrayList와 마찬가지로 List 인터페이스를 구현한 클래스
- 앞의 예제의 ArrayList를 LinkedList로 바꿔도 됨
- 앞의 예제의 ArrayList를 LinkedList로 바꿔도 됨
- Queue 인터페이스를 구현함
- 스택 자료구조에서 필요한 메소드도 제공함
- void push(E), void pop()
- void push(E), void pop()
- 메소드
- boolean offer(E)
- boolean add(E)
- E poll()
- E remove()
- E peek()
- E peek()
- E element()
- boolean offer(E)
HashMap 클래스
- (Key, value)을 갖는 원소로 구성되는 컬렉션을 다루기 위한 인터페이스
- key는 중복되지 않으며, 하나의 key에 하나의 value만 대응됨
- 메소드
- V put(K key, V value)
- V get(Object key)
- V remove(Object key)
- boolean containsKey(Object key)
- Collection
values() - Set
keySet()
- V put(K key, V value)
- 해싱을 이용하여 Map 인터페이스를 구현한 클래스
- 자료 탐색 방법이 ArrayList나 LinkedList 클래스와 다름
- 자료 탐색 방법이 ArrayList나 LinkedList 클래스와 다름