(컬렉션 프레임웍: 다수의 data)
순서O, 중복O
예)대기자 명단
ArrayList, LinkedList, Stack, Vector 등
순서X, 중복X
예)(집합)양의 정수집합, 소수의 집합
HashSet, TreeSet 등
키(key), 값(value)의 쌍으로 이루어진 데이터의 집합
순서X, 키(아이디)-중복X, 값(패스워드)-중복O
HashMap, TreeMap 등
List, Set의 공통부분을 모음.
(추가)
add(Object o)
addAll(Collection c)
//객체들을 Collection에 추가
(전체 삭제)
void clear()
//Collection의 모든 객체를 삭제
(검색)
contains(Object o)
containsAll(Collection c)
//객체들이 Collection에 포함되어있는지 확인
equals(Object o)
//동일한지 비교
hashCode()
//hash code를 반환
isEmpty()
//비어있는지 확인
iterator()
//iterator를 얻어서 반환
(삭제)
remove(Object o)
removeAll(Collection c)
//객체를 삭제
retainAll(Collection c)
//지정된 객체만을 남기고 다른 객체들은 Collection에서 삭제
//이 작업으로 Collection에 변화가 있으면 true, 아니면 false반환
size()
//저장된 객체의 개수를 반환
toArray()
//객체를 객체배열로 반환
toArray(Object[] a)
//객체를 저장해서 반환
ArrayList
LinkedList
HashSet, TreeSet
addAll(Collection c) : 추가, 합집합
containsAll(Collection c) : 확인, 부분집합
removeAll(Collection c) : 삭제, 차집합
retainAll(Collection c) : 나머지만 삭제, 교집합
HashMap, TreeMap
LinkedHashMap(순서O)
ArrayList()
ArrayList(Collection c)
ArrayList(배열의 길이)
(추가)
add(int index, Object element)
addAll(int index, Collection c)
(검색)
indexOf(Object o)
//위치를 반환
lastIndexOf(Object o)
//역방향부터 찾음
contains(Object o)
(읽기)
get(int index)
(변경)
set(int index, Object element)
//지정된 위치에 객체를 저장
(삭제)
remove(Object o)
remove(int index)
//삭제하고, 삭제된 객체를 반환
removeAll(Collection c)
clear()
//모듣 객체 삭제
(그 외)
sort(Comparator c)
//정렬
subList(from, to)
//새로운 리스트 만듬, 읽기전용
toArray()
//객체배열을 반환
isEmpty()
//비어있는지
trimToSize()
//빈공간제거
size()
//저장된 객체의 개수
ArrayList에 저장된 첫 번째 객체부터 삭제하는 경우
--> 배열 복사 발생
ArrayList에 저장된 마지막 객체부터 삭제하는 경우
--> 배열 복사 발생 X
--> 실제 소스 확인 가능
(접근시간, access time)이 짧다.
배열과 달리 불연속적으로 존재하는 데이터를 연결(link)
데이터의 삭제 : 단 한번의 참조변경만으로 가능
(기차 연결)
데이터의 추가 : 한번의 Node객체생성과 두 번의 참조변경만으로 가능
(밑이 막힌 상자)
저장(push) <->(순서가 반대) 추출(pop)
LIFO(Last In First Out) : 마지막 저장한게 제일 먼저 꺼냄
(밑에 뚫린 상자, 줄서기와 비슷)
저장(offer), 추출(poll)
FIFO(First In First Out) : 먼저 들어온게 먼저 나감.
empty() //Stack이 비어있는지 알려줌
peek() //Stack의 맨 위에 저장된 객체를 읽기.
pop() //Stack의 맨 위에 저장된 객체를 꺼낸다.
push(Object item) //Stack에 객체를 저장
search(Object o) //찾기. 배열과 달리 위치는 1부터 시작
ex) Queue q = new LinkedList();
offer(Object o) //Queue에 객체를 저장
poll() //Queeu에서 객체 삭제
peek() //읽기
hasNext() //읽을게 있는지 확인
next() //읽기
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
Comparable : 기본 정렬기준을 구현하는데 사용
Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용
compare()와 compareTo()는 두 객체의 비교결과를 반환하도록 작성
(같으면 0, 오른쪽이 크면 음수, 작으면 양수)
(생성자)
HashSet()
HashSet(Collection c)
HashSet(초기용량)
HashSet(초기용량, float loadFactor)
(추가, 삭제)
add(Object o)
addAll(Collection c) //합집합
remove(Object o) //삭제
removeAll(Collection c) //교집합
retainAll(Collection c) //차집합
clear() //모두삭제
isEmpty()
size()
toArray()
toArray(Object[] a)
contains(Object o)
containsAll(Collection c)
iterator()
(생성자)
TreeSet() //comparable <-- 기본 비교
TreeSet(Collection c)
TreeSet(Comparator comp) //비교 기준 제공
(메서드)
first() //제일 작은 것
last() //제일 큰 것
ceiling(Object o) //올림
floor(Object o) //버림
highter(Object o) //지정된 객체보다 큰 값
lower(Object o) ///지정된 객체보다 작은 값
subSet(from, to)
headSet(Object toElement) //더 작은 값들을 모두 반환
tailSet(Object fromElement) //더 큰 값들을 모두 반환
키(key) 중복허용X
값(value) 중복허용O
Entry[] table;
class Entry{
Object key;
Object value;
}
ex) 환자정보관리 - 출생연도별로 정리
해시함수를 이용해서 해시테이블에 데이터를 저장 & 검색
해시테이블은 배열과 링크드 리스트가 조합된 형태
메서드
(생성자)
HashMap()
HashMap(배열 용량)
HashMap(배열 용량, float loadFactor)
HashMap(Map m)
(읽기)
entrySet()
//(키,값)쌍(set)으로 반환
keySet()
//키 반환
values()
//값 반환
(검색)
containsKey(Object key)
containsValue(Object value)
//각각 키와 값이 있는지 확인
get(Object key)
//지정한 키에 대응하는 value를 찾아서 반환
getOrDefault(Object key, ObjectdefaultValue)
//value를 못찾으면 defaultValue를 반환
(추가)
put(Object key, Object value)
putAll(Map m)
(삭제)
remove(Object key)
(변경)
replace(Object key, Object value)
(그 외)
size()
isEmpty()
claer()
clone()
컬렉션 채우기, 복사, 정렬, 검색
: fill(), copy(), sort(), binarySearch()
컬렉션의 동기화 - synchronizedXXX()
변경불가(readOnly) 컬렉션 만들기 - unmodifiableXXX()
싱글톤 컬렉션 만들기 - singletonXXX()
: 객체 1개만 저장
한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()