Collections Framework - 핵심 인터페이스

코코·2020년 7월 28일
0

Java

목록 보기
9/25
post-custom-banner

📚 자바의 정석을 정리한 내용입니다.

Collections Framework는 다수의 데이터를 다루는 데 필요한 다양한 클래스를 제공한다.

핵심 인터페이스


상속계층도
이미지 출처 : http://dinfree.com/lecture/language/112_java_6.html

interface특징구현 클래스
List순서가 있는 데이터 집합. 중복 허용ArrayList, LinkedList, Stack, Vector 등
Set순서를 유지하지 않는 데이터 집합. 중복 없음.HashSet, TreeSet
Mapkey, value 쌍(pair)으로 이루어진 데이터 집합.
순서 유지 안 됨. key는 중복 안 됨.
HashMap, TreeMap, Hashtable, Properties

컬렉션 프레임워크의 모든 컬렉션 클래스들은 List, Set, Map중 하나를 구현하고 있다. 또한 구현한 인터페이스의 이름을 포함하고 있기 때문에 쉽게 구분할 수 있다.
예외로 Vector, Hashtable, Properties는 컬렉션 프레임워크 이전부터 있었기 때문에 명명규칙을 따르지 않는다.

Collection Interface


Collection인터페이스는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 기본적인 메서드를 정의하고 있다.

method설명
boolean add(Obejct o)
boolean addAll(Collection c)
지정된 객체Object 또는 Collection의 객체를 Collection에 추가한다.
void clear()Collection의 모든 객체를 삭제한다.
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 Object 또는 Collection객체가 Collection에 포함되어 있는지 확인한다.
boolean equals(Object o)동일한 Collection인지 확인한다.
int hashCodeCollection의 hash code를 반환한다.
boolean isEmpty()Collection이 비어있는지 확인한다.
Iterator iterator()Collection의 Iterator를 얻어서 반환한다.
boolean remove(Object o)지정된 객체를 삭제한다.
boolean removeAll(Collection c)지정한 Collection에 포함된 객체를 삭제한다.
int size()Collection에 저장된 객체의 수를 반환한다.(=length)
Object[] toArray()Collection에 저장된 객체를 객체배열Object[]로 반환한다.
Object[]toArray(Object[] a)지정한 배열a에 Collection의 객체를 저장해서 반환한다.

List


List인터페이스의 특징

  • 중복 허용
  • 순서 유지
method설명
void add(int index, Object element)
boolean addAll(int index, Collection c)
지정한 index에 객체element 또는 컬렉션에 포함된 객체를 추가한다.
Object get(int intex)지정한 index에 있는 객체 반환한다.
int indexOf(Object o)지정한 객체의 위치를 순방향으로 찾아서 반환한다.
int lastIndexOf(Object o)지정한 객체의 위치를 역방향으로 찾아서 반환한다.
ListIterator listIterator()
ListIterator listIterator(int index)
List객체에 접근할 수 있는 ListIterator를 반환한다.
Object remove(int index)지정한 index에 있는 객체를 지우고, 삭제한 객체를 반환한다.
Object set(int index, Object element)지정한 index에 객체element를 저장한다.
void sort(Comparator c)지정한 비교자comparator로 List를 정렬한다.
List subList(int fromIndex, int toIndex)지정한 범위from~to에 있는 객체를 반환한다.

Set


특징

  • 중복 허용 하지 않음.
  • 순서 유지 안 됨

구현 클래스로 HashSet, TreeSet이 있음. (위 계층도 참고)

Map


key와 value를 하나로 묶어서 저장하는 컬렉션 클래스를 구현할 때 사용한다.
구현 클래스는 위 그림 참고

  • key는 중복 X, value는 중복 O
method설명
void clear()Map의 모든 객체 삭제한다.
boolean containsKey(Object key)지정한 key와 일치하는 객체가 있는지 확인한다.
boolean containsValue(Object value)지정한 value와 일치하는 객체가 있는지 확인한다.
Set entrySet()Map에 저장된 key-value를 Map.Entry타입 객체로 저장한 Set으로 반환한다.
boolean equals(Object o)동일한 Map인지 비교한다.
Object get(Object key)지정한 key객체에 대응하는 value객체를 반환한다.
int hashCode()해시코드를 반환한다.
Object put(Object key, Object value)Map에 key-value를 연결mapping하여 저장한다.
void putAll(Map t)지정한 Map의 모든 key-value쌍을 추가한다.
Object remove(Object key)지정한 key와 일치하는 key-value를 삭제한다.
int size()Map에 저장된 key-value쌍의 개수를 반환한다.
Set keySet()Map에 저장된 모든 key객체를 반환한다.
Collection values()Map에 저장된 모든 value객체를 반환한다.

values()의 반환타입은 Collection.
KeySet()의 반환타입은 Set.

왜?

key는 중복을 허용하지 않으므로 Set으로 반환해도 문제가 없다.
하지만 value는 중복을 허용하기 때문에 Set으로 반환했을 경우 문제가 발생할 수 있다.
따라서 value는 Set이 아닌 Collection타입으로 반환한다.

Map.Entry


Map인터페이스의 내부 인터페이스inner interface
Map인터페이스를 구현하는 클래스는 Map.Entry인터페이스도 함께 구현해야 한다.

메서드설명
boolean equals(Object o)동일한 Entry인지 비교한다.
Object getKey()Entry의 key객체를 반환한다.
Object getValue()Entry의 value객체를 반환한다.
int hashCode()Entry의 해시코드를 반환한다.
Object setValue(Object value)Entry의 value객체를 지정한 객체로 바꾼다.
post-custom-banner

0개의 댓글