Java

Java Collection Framework

dev-rootable 2024. 5. 8. 12:32

❓ Collection Framework란?

 

Java에서 데이터를 저장하는 기본 자료구조들을 한 곳에 모아 관리하고 편리하게 사용하기 위해 제공하는 인터페이스

 

출처: https://inpa.tistory.com/entry/JCF-%F0%9F%A7%B1-Collections-Framework-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

🗨 Collection

여러 요소들을 담을 수 있는 자료구조로서 다수의 데이터 그룹 또는 컨테이너(Container)라고도 부른다.

배열은 다음과 같은 단점이 있다.

- 최초 크기가 할당된 이후 변경 불가
- 같은 기본형 데이터 자료형만 저장
- 요소의 삽입/삭제가 어려움

컬렉션은 배열의 단점들을 해소하기 위해 등장했다.

 

😀 장점

 

  • 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에 편리하고 재사용성이
    높다.
  • 이미 구현되어 있는 API를 사용하면 되므로 새로운 API를 익히고 설계하는 시간이 줄어든다.
  • 관련 없는 API 간의 상호 운용성을 제공 (상위 인터페이스 타입으로 업캐스팅하여 사용)

 

📝 호환성

컬렉션 프레임워크에 저장할 수 있는 데이터는 오로지 객체(Object) 뿐이다. 객체를 저장한다는 것은 곧 주소 값
저장한다는 의미이므로 null도 저장이 가능하다.

primitive 타입을 저장하고 싶다면 박싱(Boxing)을 통해 wrapper 타입으로 변환하여 저장해야 한다.

 

🪐 컬렉션 프레임워크 종류

 

Interface 순서 중복 특징 예시 구현 클래스
List O O - 대기자 명단 ArrayList, LinkedList, Vector, Stack
Set X X - 양의 정수집합,
소수의 집합
HashSet, TreeSet
Map X Key 중복 불가, Value 중복 가능 Key-Value 쌍 구성 우편번호, 지역번호(전화번호) HashMap, TreeMap, HashTable, LinkedHashMap, Properties

 

📚 Collection 인터페이스 메서드

 

Method Description
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 Collection에 추가
void clear() Collection의 모든 객체를 삭제
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들이 Collection에 포함되어 있는지 확인
boolean equals(Object o) 동일한 Collection인지 비교
int hashCode() Collection의 hash code를 반환
boolean isEmpty() Collection이 비어있는지 확인
Iterator iterator() Collection의 Iterator를 얻어서 반환
boolean remove(Object o) 지정된 객체를 삭제
boolean removeAll(Collection c) 지정된 Collection에 포함된 객체들을 삭제
boolean retainAll(Collection c) 지정된 Collection에 포함된 객체만을 남기고 다른 객체들을 Collection에서 삭제한다. 이 작업으로 인해 Collection에
변화가 있으면 true를 그렇지 않으면 false를 반환한다.
int size() Collection에 저장된 객체의 개수를 반환
Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 

 

🔍 Iterable 인터페이스

 

 

컬렉션들의 최상위 인터페이스로 자료들을 순회할 때 사용하는 Iterator 객체를 관리하는 인터페이스다.

 

Method Description
default void forEach(Consumer<? super T> action) 함수형 프로그래밍 전용 루프 메서드
Iterator<T> iterator() 컬렉션에서 이터레이터를 구현
default Spliterator<T> spliterator() 파이프라이닝 관련 메서드

 

📝 Map은 Iterable 인터페이스를 상속받지 않아 위 메서드가 구현되어 있지 않다. 따라서 직접적으로 Map 컬렉션을 순회할 수 없고 Stream을 사용하거나 간접적으로 Collection으로 반환하여 루프문으로 순회하는 식을 이용한다.

 

출처: 자바의 정석 by 남궁성

 

References:

 

https://velog.io/@devharrypmw/Java-List-Set-Map%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[Java] Collection 정리_1

[Java] Collection 정리_1 : 목록과 관련된 컬랙션 프레임워크

velog.io

 

https://inpa.tistory.com/entry/JCF-%F0%9F%A7%B1-Collections-Framework-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

🧱 Java Collections Framework 종류 💯 총정리

Java Collection Framework 자바 새내기분들은 컬렉션 프레임워크라는 단어에 뭔가 거창하고 어려운 느낌이 들수 있겠지만, 그냥 자료 구조(Data Structure) 종류의 형태들을 자바 클래스로 구현한 모음집

inpa.tistory.com