728x90
20220928(수)
- 목차
- Set 컬렉션(HashSet)
- Map 컬렉션(HashMap, Hashtable, Properties)
- 검색 기능을 강화시킨 컬렉션
- LIFO와 FIFO 컬렉션
< Set 컬렉션 >
- Set 컬렉션
- 저장 순서가 유지되지 않음(List와 반대!) 😮
- 객체를 중복 저장 불가
- 하나의 null만 저장 가능 - list / set / map 중 어떤 걸 사용해야 할까?
판단 필요 ➡ 예제를 거치면 판단가능! - Set 인터페이스의 메소드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 주어진 객체를 저장, 객체가 성공적으로 저장되면 true 리턴, 중복 객체면 false 리턴 |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
boolean isEmpty() | 컬렉션이 비어 있는지 조사 | |
Iterator<E> iterator() | 저장된 객체를 한 번씩 가져오는 반복자 리턴 | |
int size() | 저장되어 있는 전체 객체 수 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체를 삭제 |
boolean remove(Object o) | 주어진 객체를 삭제 |
- set 컬렉션
HashSet | Set<E> set = new HashSet<E>(); |
동일 객체 및 동등 객체는 중복저장하지 않음 hashCode()리턴 값이 같으면 equals()리턴값 확인함 |
< Map 컬렉션 > - 멀티 타입
- 특징
- 키(key)와 값(value)으로 구성된 Map.Entry 객체를 저장하는 구조
- 키와 값은 모두 객체
- 키는 중복될 수 없지만 값은 중복 저장 가능 - Map 인터페이스의 메소드
기능 | 메소드 | 설명 |
객체 추가 | V put(K ket, V value) | 주어진 키로 값을 저장. 새로운 키일 경우 null 리턴 동일한 키가 잇을 경우 값을 대체하고 이전 값을 리턴 |
객체 검색 | boolean containsKey(Object key) | 주어진 키가 있는지 여부 |
boolean containsValue(Object value) | 주어진 값이 있는지 여부 | |
Set<Map.Entry<K, V>> entrySet() | 키와 값이 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아 리턴 | |
V get(Object key) | 주어진 키가 있는 값을 리턴 | |
boolean is Empty() | 컬렉션이 비어 잇는지 여부 | |
Set<K> keySet() | 모든 키를 Set객체에 담아서 리턴 | |
int size() | 저장된 키의 총 수를 리턴 | |
Collection<V> values() | 저장된 모든 값을 Collection에 담아서 리턴 | |
객체 삭제 | void clear() | 모든 Map.Entry(키와 값)를 삭제 |
V remove(Object key) | 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴 |
- 구현 클래스
HashMap | Map<K, V> map = new HashMap<K, V>(); |
- 키 객체는 hashCode()와 equals()를 재정의해 동등 객체가 될 조건을 정해야 함 - 키 타입은 String 많이 사용 |
|
Hashtable | Map<K, V> map = new Hashtable<K, V>(); |
- 키 객체 만드는 법은 HashMap과 동일 - 스레드 동기화(synchronization)가 된 상태 : 복수의 스레드가 동시에 Hashtable에 접근해서 객체를 추가, 삭제 하더라도 스레드에 안전 |
|
Properties | |
- 키와 값을 String 타입으로 제한한 Map 컬렉션 - Properties 는 프로퍼티(~.properties) 파일을 읽어 들일 때 주로 사용 |
< 검색 기능을 강화시킨 컬렉션 >
- 아래 두 컬렉션들은 이진 트리를 이용해서 계층적 구조(Tree 구조)를 가지면서 객체를 저장한다.
Set 컬렉션 | Map 컬렉션 |
TreeSet | TreeMap |
이진 트리(binary tree)를 기반으로 한 Set 컬렉션 왼쪽과 오른쪽 자식 노드를 참조위한 두 개의 변수로 구성 |
이진 트리(binary tree) 를 기반으로 한 Map 컬렉션 키와 값이 저장된 Map.Entry를 저장 왼쪽과 오른쪽 자식 노드를 참조위한 두 개의 변수로 구성 |
특정 객체를 찾는 메소드: first(), last(), lower(), higher(), … 정렬 메소드: descendingIterator(), descendingSet() 범위 검색 메소드: headSet(), tailSet, subSet() |
단일 노드 객체를 찾는 메소드: firstEntry(), lastEntry(), lowerEntry(), higherEntry(), … 정렬 메소드: descendingKeySet(), descendingMap() 범위 검색 메소드: headMap(), tailMap, subMap() |
< LIFO와 FIFO 컬렉션 > - 사고를 단순하게!!
- 자료구조
: 기억장소에서 데이터를 관리하는 방식
변수 : 단일값,
배열 : 동일한 데이터들을 하나의 이름으로 관리. 크기고정,
컬렉션 : 제네릭 지원. 동적기억장소가 확장. 다양한 자료구조 존재
Stack 클래스 (LIFO : 후입선출) | Queue 인터페이스 (FIFO : 선입선출) |
후입선출(LIFO: Last In First Out) 구조 응용 예: JVM 스택 메모리 |
선입선출(FIFO: First In First Out) 응용 예: 작업 큐, 메시지 큐, … 구현 클래스: LinkedList |
- push(E item) : 주어진 객체를 스택에 넣는다. - peek() : 스택의 맨 위 객체를 가져옴. 객체를 스택에서 제거 X - pop() : 스택의 맨 위 객체를 가져옴. 객체를 스택에거 제거. |
- offer(E e) : 주어진 객체를 넣는다. - peek() : 객체 하나를 가져옴. 객체를 큐에서 제거 X. - poll() : 객체 하나를 가져옴. 객체를 큐에서 제거. |
728x90
'🏫 Open API_JAVA' 카테고리의 다른 글
[49일차] 람다식 기본 문법 / 타겟 타입과 함수적 인터페이스 / 표준 API의 함수적 인터페이스 (0) | 2022.10.03 |
---|---|
[48일차] 제네릭 타입 / 멀티 타입 파라미터 / 제네릭 메소드 / 제한된 타입 파라미터 / 와일드카드 타입 / 제네릭 타입의 상속과 구현 (0) | 2022.09.29 |
[46일차] 스레드 그룹 / 스레드풀 / 컬렉션 프레임워크 / List 컬렉션 (0) | 2022.09.28 |
[45일차] 동기화 메소드와 동기화 블록 / 스레드 상태 / 스레드 상태 제어 / 데몬 스레드 (0) | 2022.09.27 |
[44일차] 멀티 스레드 개념 / 작업 스레드 생성과 실행 / 스레드 우선순위 (0) | 2022.09.26 |