관리 메뉴

나구리의 개발공부기록

자바의 정석 기초편 ch11 - 1 ~ 6[컬렉션프레임워크와 핵심 인터페이스, Collection, List, Set, Map] 본문

유튜브 공부/JAVA의 정석 기초편(유튜브)

자바의 정석 기초편 ch11 - 1 ~ 6[컬렉션프레임워크와 핵심 인터페이스, Collection, List, Set, Map]

소소한나구리 2023. 12. 8. 12:20

1) 컬렉션 프레임워크

(1) 컬렉션(collection)

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

(2) 프레임워크(framework)

  • 표준화, 정형화된 체계적인 프로그래밍 방식 - 유지보수가 쉬워짐

(3) 컬렉션프레임워크(collections framework)

  • 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식
  • 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공(저장, 삭제, 검색, 정렬 등)
  • java.util패키지에 포함. JDK1.2부터 제공 / 그 이전에도 제공은 했으나 표준화가 안되어있었음

(4) 컬렉션클래스(collections class)

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

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

(1) Collection

  • List와 Set의 공통부분을 뽑아서 정의한 인터페이스 

(2) List

  • 순서가 있는 데이터의 집합, 데이터의 중복을 허용함 (예: 대기자 명단 등)
  • ArrayList, LinkedList, Stack, Vector 등

(3) Set

  • 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음 (예: 양의 정수집합, 소수의 집합)
  • HashSet, TreeSet 등

(4) Map

  • 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합
  • 순서는 유지 되지 않고, 키는 중복 허용불가 값은 중복을 허용 (예: 우편번호, 지역번호(전화번호), id(key) - password(value))
  • HashMap, TreeMap, HashTable, Properties 등

3) Collection인터페이스의 메서드

Collection 인터페이스 메서드
설명
추가 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의 hashcode를 반환
- boolean isEmpty() Collection이 비어 있는지 확인
Iterator iterator() Collection의 Iterator를 얻어서 반환
삭제 boolean remove(Object o) 지정된 객체를 삭제
boolean removeAll(Collection c) 지정된 Collection(c)에 포함된 객체들을 삭제
boolean retainAll(Collection c) 지정된 Collection(c)에 포함된 객체만을 남기고 다른 객체들은 Collection에서 삭제
이 작업으로 인해 Collection에 변화가 있으면 true 없으면 false를 반환
int size() Collection에 저장된 객체의 개수를 반환
배열 저장 Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 반환

4) List인터페이스의 메서드 - 저장된순서유지 , 중복허용

  • Vector 와 ArrayList는 거의 같음 - Vector는 옛날거, ArrayList는 Vector를 개선한 것
  • ArrayList LinkedList 두개가 핵심

List 인터페이스 메서드(Collection 메서드는 제외)
설명
추가 void add(int index, Object element)
boolean addAll(int index, Collection c)
지정된 위치(index)의 객체(element)또는 컬렉션에 포함된 객체들을 추가
읽기 Object get(int index) 지정된 위치(index)에 있는 객체를 반환
검색 int indexOf(Object o) 지정된 객체의 위치(index)를 반환
(List의 첫 번째 요소부터 순방향으로)
int lastIndexOf(Object o) 지정된 객체의 위치(index)를 반환
(List의 마지막 요소부터 역방향으로)
- ListIterator ListIterator() List의 객체에 접근할 수 있는 ListIterator를 반환
ListIterator ListIterator(int index)
삭제 Object remove(int index)  지정된 위치(index)에 있는 객체를 삭제 -> 삭제된 객체를 반환
변경 Object set(int index, Object element) 지정된 위치(index)에 객체(element)를 저장
정렬 void sort(Comparator c) 지정된 비교자(Comparator)로 List를 정렬 - java8추가
일부추출 List subList (int fromIndex, int toIndex) 지정된 범위(fromIndex 부터 toIndex까지)에 있는 객체를 반환

5) Set인터페이스의 메서드 - 순서없음, 중복없음

  • HashSet, TreeSet이 핵심
  • Set인터페이스의 메서드 - Collection인터페이스와 동일

집합과 관련된 메서드 -> (Collection에 변화가 있으면 true, 아니면 false를 반환)

Set 메서드
설명
합집합 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에서 삭제

6)Map인터페이스의 메서드 - 순서없음, 중복(키 - X , 값 - O)

  • Hashtable과 HashMap은 거의 같음 - Hashtable(동기화 O)은 옛날 것 HashMap(동기화X)은 새로운 것
  • key와 value를 쌍으로 저장 - 합쳐서 Entry라고 부름
  • HashMap, TreeMap이 핵심
    • LinkedHashMap - 순서O : 순서가 필요할 때 사용

 

Map 인터페이스 메서드
설명
전체삭제 void clear() Map의 모든 객체를 삭제
검색 boolean containsKey(Object key) 지정된 key객체와 일치하는 Map의 key객체가 있는지 확인
boolean containsValue(Object value) 지정된 value객체와 일치하는 Map의 value객체가 있는지 확인
Object get(Object key) 지정된 key객체에 대응하는 value객체를 찾아서 반환
읽기

Set entrySet() Map에 저장되어있는 key-value쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환
Set keySet() Map에 저장된 모든 key객체를 반환
Collection values() Map에 저장된 모든 value객체를 반환
(순서와 중복이 있어도, 없어도 되서 Collection타입으로 반환)
- boolean equals(Object o) 동일한 Map인지 비교
- int hashcode() 해시코드를 반환
- boolean isEmpty() Map이 비어있는지 확인
추가
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쌍의 개수를 반환

 

** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의