🎥Back/자바의 정석

[JAVA의 정석]컬렉션프레임웍과 핵심 인터페이스

i_zzy 2024. 1. 13. 21:50

유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 

 

📂content

1. 컬렉션 프레임(collections framework)

⚝ 컬렉션 collection

여러 객체(데이터)를 모아 놓은 것을 의미

 

⚝ 프레임웍 framework

표준화, 정형화된 체계적인 프로그래밍 방식

생산성, 유지보수가 쉬워짐

 

⚝ 컬렉션 프레임웍(collectios framework)

- 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식

- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공

객체를 다룬다? 
다수의 데이터를 저장, 삭제, 검색, 정렬 등을 할 수 있다는 것 

- java.util패키지에 포함. JDK1.2부터 제공

 

⚝ 컬렉션 클래스(collection class)

- 다수의 데이터를 저장할 수 있는 클래스(예, Vector, ArrayList, HashSet)

 

 

 

 

 

2. 컬렉션 프레임웍의 핵심 인터페이스 

인터페이스 특징
List 순서가 있는 데이터의 집합. 데이터의 중복을 허용
예) 대기자 명단
구현클래스 : `ArrayList`, `LinkedList`, `Stack`, `Vector` 등
Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. 
예) 양의 정수집합. 소수의 집합
구현클래스 : `HashSet`, `TreeSet` 등
Map 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. 
예) 우편번호, 지역번호(전화번호)
구현클래스 : `HashMap`, `TreeMap`, `Hashtable`, `Properties` 등

 

- xxxMap, xxxList, xxxSet처럼 클래스이름에 인터페이스 이름을 넣도록 표준화함. 그래서 옛날 것들에는 인터페이스 이름이 없다. 
- ListSet의 공통적인 부분을 뽑아서 Collection이라는 인터페이스를 정의함. 
- Map은 key,value로 이루어져 있어서 단일값을 저장하는 List와 Set과는 특성이 달라서 공통적인 부분을 뽑아내지 못 함. 

 

 

✎ 정리

더보기
인터페이스 순서 중복
List O O
Set X X
Map X key X, value O

 

 

 

 

 

3. Collction 인터페이스의 메서드

메서드 설명
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)의 객체들이 Collecition에 포함되어 있는지 확인
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 retianAll(Collection c) 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 Collection에서 삭제
이 작업으로 인해 Collection에 변화가 있으면 true, 그렇지 않으면 false 반환

예) ListA.retainAll(ListB)일 때, 공통된 것만 남기고 전부 삭제 => 교집합  
int size() Collection에 저장된 객체의 개수를 반환
Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 반환

 

 

 

 

 

4. List인터페이스 - 순서O, 중복O

- List인터페이스를 구현한 class는 여러 개가 있다.
- vector와 ArrayList는 거의 같은데, vector는 옛날 것이고 ArrayList는 Vector을 개선한 것이다. 
- 여기서 가장 중요한 것은 ArrayListLinkedList이다. 

 

메서드 설명
void add(int index, Object element)
boolean addAll(int index, Collection c)
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체들을 추가
Object remove(int index) 지정된 위치(index)에 있는 객체를 삭제하고 삭제된 객체를 반환
Object get(int index) 지정된 위치(index)에 있는 객체를 반환
Object set(int index, Object element) 지정된 위치(index)에 객체(element)를 저장
int indexOf(Object o) 지정된 객체의 위치(index)를 반환 (List의 첫 번째 요소부터 순방향으로 찾음)
int lastIndexOf(Object o) 지정된 객체의 위치(index)를 반환 (List의 마지막 요소부터 역방향으로 찾음)
ListIterator listIterator()
ListIterator listIterator(int index)
List의 객체에 접근할 수 있는 ListIterator를 반환
void sort(Comparator c) 지정된 비교자(comparator)로 List를 정렬
List subList(int fromIndex, int toIndex) 지정된 범위(fromIndex부터 toIndex)에 있는 객체를 반환 (일부만 뽑음)

● Collection 인터페이스 메서드는 제외함. 

 

 

 

 

 

5. Set 인터페이스 - 순서X , 중복 X

- HashSetTreeSet이 핵심

 

메서드 설명
boolean add(Object o) 지정된 객체(o)를 Collection에 추가
void clear() Collection의 모든 객체를 삭제 
boolean contains(Object o) 지정된 객체(o)가 Collecition에 포함되어 있는지 확인
boolean equals(Object o) 동일한 Collection인지 비교
int hashCode() Collection의 hash code를 반환
boolean isEmpty() Collection이 비어있는지 확인
Iterator iterator() Collection의 Iterator을 얻어서 반환
boolean remove(Object o) 지정된 객체를 삭제
int size() Collection에 저장된 객체의 개수를 반환
Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 반환

● Set 인터페이스의 메서드는 Collection 인터페이스와 동일

 

메서드 설명
boolean addAll(Collection c) 지정된 Collection(c)의 객체들을 Collection에 추가(합집합)
boolean containsAll(Collection c) 지정된 Collection(c)의 객체들이 Collection에 포함되어 있는지 확인(부분집합)
boolean removeAll(Collection c) 지정된 Collection(c)에 포함된 객체들을 삭제(차집합)
boolean retainAll(Collection c) 지정된 Collection(c)에 포함된 객체만을 남기고 나머지는 Collection에서 삭제(교집합)
집합과 관련된 메서드(Collection에 변화가 있으면 true, 아니면 false를 반환)

 

 

 

 

6. Map 인터페이스 - 순서X , 중복 (키X, 값O)

- HashMapTreeMap이 가장 중요
- LinkedHashthMap은 연결되어 있으니까 순서가 있음.  
- Hashtable은 HashMap과 같은 건데 옛날 것이다. 
  - Hashtable은 동기화O, HashMap은 동기화X(but, 동기화처리할 수 있는게 존재)

 

메서드 설명
void clear() Map의 모든 객체를 삭제 
boolean containsKey(Object key) 지정된 key객체와 일치하는 Map의 key객체가 있는지 확인
boolean containsValue(Object value) 지정된 value객체와 일치하는 Map의 value객체가 있는지 확인 
boolean equals(Object o) 동일한 Map인지 비교
Object get(Object key) 지정한 key객체에 대응하는 value객체를 찾아서 반환
int hashCode() 해시코드를 반환
boolean isEmpty() Map이 비어있는지 확인
Set entrySet() Map에 저장되어 있는 key-value쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환
Set keySet() Map에 저장된 모든 key객체를 반환
Collection values() Map에 저장된 모든 value객체를 반환 
Object put(Object key. Object value) Map에 value객체를 key객체에 연결(mapping)하여 저장
void putAll(Map t) 지정된 Map의 모든 key-value쌍을 추가
Object remove(Object key) 지정한 key객체와 일치하는 key-value객체를 삭제
int size() Map에 저장된 key-value쌍의 개수를 반환 
- Entry : key - value 한 쌍을 칭함 
- entrySet()의 반환값이 Set이기 때문에 순서X, 중복X이고, values()의 반환값은 Collection이다.
  자손이 List와 Set이므로 순서O, X이고 중복 O,X이다. 따라서 결과가 무엇이 오든 괜찮다.  

 

 

 

 

 

출처