Java Collection Framework (1)

HEETAE HEO·2022년 6월 20일
0
post-thumbnail
post-custom-banner

자바 컬렉션 프레임워크(Java Collection Framework)

배열을 보완하는 컬렉션(Collection)

컬렉션은 여러 요소들을 담을 수 있는 자료구조이다. 즉 다수의 데이터 그룹이며 다른 말로 컨테이너라고도 부른다. 배열과 비슷하지만 크기가 고정된 배열을 보완하여 Re-sizable한 특성을 가집니다.

Java Collection Framework의 구성요소

  • Interface
    -> Collection, List, Set, Queue, SortedSet ...
    -> Map, SortedMap ...
    -> Iterator, Enumeration, Spliterator ....

  • Class : 위의 인터페이스들을 구현한 다양한 클래스들

컬렉션 프레임워크의 장점

별도로 컬렉션 클래스를 구현하는 것보다 이미 구현되어 있는 것을 사용함으로써 코딩 시간을 감소시킬 수 있다.
컬렉션 프레임워크들은 잘 테스트되고 검증되어 있기 때문에 코드 품질을 보장한다. JDK에 포함된 컬렉션 프레임워크들을 사용하여 코드 유지보수 시간을 감소시킬 수 있다. 재사용 가능하고 상호 운용성이 보장된다.

컬렉션 프레임워크 계층 구조

컬렉션 인터페이스(Collection Interface)

제네릭(Generics)으로 표현

컬렉션 인터페이스들은 제네릭으로 표현되어 컴파일 시점에서 객체의 타입을 체크하기 때문에 런타임 에러를 줄이는 데 도움이 된다. 예를 들어 런타임 시 발생하는 ClassCastException을 컴파일 시점에서 찾아낼 수 있다. 또한 클래스 캐스팅을 하지 않아도 되고 instansof를 사용하지 않아도 되므로 코드를 좀 더 깔끔하게 유지할 수 있다.

컬렉션 프레임워크 대표적인 인터페이스

  • List 인터페이스

  • Set 인터페이스

  • Map 인터페이스

List, Set 인터페이스는 Collection 인터페이스를 상속받는다. 따라서 인터페이스와 Set 인터페이스의 공통된 부분을 Collection 인터페이스에서 정의하고 있다. 반면 Map 인터페이스는 구조상의 차이(Key-Value)로 인해 Collection 인터페이스를 상속받지 않고 별도로 정의된다.

1. Collection Interface

Collection 인터페이스는 직접적인 구현은 제공하지 않으며 모든 컬렉션 클래스가 구현해야하는 메서드를 포함하고 있다.

  • boolean add(Object o) : 지정된 객체(o)를 Collection에 추가

  • boolean addAll(Collection c) : Collection의 객체들을 Collection에 추가

  • void clear() : Collection의 모든 객체 삭제

  • boolean contains(Object o) : 지정된 객체(o)가 Collection에 포함되어있는지 확인

  • boolean containsAll(Collection c) : Collection의 객체들이 Collection에 포함되어있는지 확인

  • boolean equals(Object o) : 동일한 Collection인지 비교

  • int hashCode() : Collection의 hash code를 반환

  • boolean isEmpty() : Collection이 비어있는지 확인

  • Iterator iterator() : Collection의 iterator를 얻어서 반환

  • boolean reamove(Object o) : 지정된 객체 삭제

  • boolean removeAll(Collection c) : 지정된 Collection에 포함된 객체들을 삭제

  • boolean retainAll(Collection c) : 지정된 Collection에 포함된 객체만 남기고 다른 객체들은 Collection에서 삭제, 이 작업 후에 Collection에 변화가 있으면 true를 그렇지 않으면 false를 반환

  • int size() : Collection에 저장된 객체의 개수 반환

  • Object[] toArray() : Collection에 저장된 객체를 객체배열로 반환

  • Object[] toArray(Object[] a) : 지정된 배열에
    Collection의 객체를 저장해서 반환

2. List Interface -> 순성 O, 중복 O

List 인터페이스는 순서가 있는 컬렉션이며 중복 요소를 포함할 수 있으며 인덱스로 모든 요소에 접근할 수 있다.


  • void add(int index, Object element) : 지정된 위치(index)에 객체(element)를 추가

  • boolean addAll(int index, Collection c) : 지정된 위치(index)에 컬렉션에 포함된 객체들을 추가

-Object get(int index) : 지정된 위치(index)에 있는 객체를 반환

  • int indexOf(Object o) : 지정된 객체의 위치(index)를 반환 (List의 첫 번째 요소부터 순방향으로 찾음)

  • int lastIndexOf(Object o) : 지정된 객체의 위치(index)를 반환 (List의 마지막 요소부터 역방향으로 찾음)

  • 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 tolndex) : 지정된 범위(fromIndex부터 tolndex)에 있는 객체 반환

Set Interface -> 순서 x, 중복 x

Set 인터페이스는 중복 요소를 포함할 수 없으며 랜덤 액세스(Random access)를 허용하지 않으므로, iterator 또는 foreach를 이용하여 요소를 탐색할 수 있다. Set 인터페이스로 구현된 클래스는 HashSet, TreeSet, LinkedHashSet 이 있다.

  • Set 인터페이스의 메소드는 Collection 인터페이스의 메소드와 동일하다.

  • boolean add(Object o) : 지정된 객체(o)를 Collection에 추가

  • boolean addAll(Collection c) : Collection의 객체들을 Collection에 추가 (합집합)

  • void clear() : Collection의 모든 객체 삭제

  • boolean contains(Object o) : 지정된 객체(o)가 Collection에 포함되어있는지 확인

  • boolean containsAll(Collection c) : Collection의 객체들이 Collection에 포함되어있는지 확인 (부분집합)

  • boolean equals(Object o) : 동일한 Collection인지 비교

  • int hashCode() : Collection의 hash code를 반환

  • boolean isEmpty() : Collection이 비어있는지 확인

  • Iterator iterator() : Collection의 iterator를 얻어서 반환

  • boolean reamove(Object o) : 지정된 객체 삭제

  • boolean removeAll(Collection c) : 지정된 Collection에 포함된 객체들을 삭제 (차집합)

  • boolean retainAll(Collection c) : 지정된 Collection에 포함된 객체만 남기고 다른 객체들은 Collection에서 삭제, 이 작업 후에 Collection에 변화가 있으면 true를 그렇지 않으면 false를 반환 (교집합)

  • int size() : Collection에 저장된 객체의 개수 반환

  • Object[] toArray() : Collection에 저장된 객체를 객체배열로 반환

  • Object[] toArray(Object[] a) : 지정된 배열에 Collection의 객체를 저장해서 반환

profile
Android 개발 잘하고 싶어요!!!
post-custom-banner

0개의 댓글