유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다.
📂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처럼 클래스이름에 인터페이스 이름을 넣도록 표준화함. 그래서 옛날 것들에는 인터페이스 이름이 없다.
- List와 Set의 공통적인 부분을 뽑아서 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을 개선한 것이다.
- 여기서 가장 중요한 것은 ArrayList와 LinkedList이다.
메서드 | 설명 |
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
- HashSet과 TreeSet이 핵심
메서드 | 설명 |
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)
- HashMap과 TreeMap이 가장 중요
- 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이다. 따라서 결과가 무엇이 오든 괜찮다.
출처
'🎥Back > 자바의 정석' 카테고리의 다른 글
[JAVA의 정석]Iterator, Enumeration, Map과 Iterator (0) | 2024.01.16 |
---|---|
[JAVA의 정석]Stack과 Queue의 활용 (0) | 2024.01.16 |
[JAVA의 정석]Stack과 Queue (0) | 2024.01.16 |
[JAVA의 정석]LinkedList (0) | 2024.01.16 |
[JAVA의 정석]ArrayList (0) | 2024.01.16 |