11장 컬렉션 프레임 워크
인터페이스 Collection <- (List, Set)
✔ 전체
clear()
isEmpty()
equals(Collection)
List<Integer> list1 = new ArrayList<>();
list1 = Arrays.asList(1,2,3);
System.out.println(list1.equals(Arrays.asList(1,2,3))); // true
✔ 요소
add(Object)
addAll(Collection)
remove(Object)
removeAll(Collection)
retainAll(Collection)
//removeAll
Collection<Integer> list1 = new ArrayList<>(Arrays.asList(1,2,3));
Collection<Integer> list2 = new ArrayList<>(Arrays.asList(1,2));
list1.removeAll(list2);
System.out.println(list1); // 3
//retainAll
Collection<Integer> list3 = new ArrayList<>(Arrays.asList(1,2,3));
Collection<Integer> list4 = new ArrayList<>(Arrays.asList(1,2));
list3.retainAll(list4);
System.out.println(list3); // 1, 2
✔ 변환
toArray()
iterator()
인터페이스 List <- (ArrayList, LinkedList)
✔ 요소
add(Object)
get(idx)
set(idx, Object)
remove(Object)
✔ 조회
contains(Object)
indexOf(Object)
lastIndexOf(Object)
✔ 정렬, 서브리스트
sort(Comparator)
subList(idx start, idx end)
구현체 ArrayList
Collection, List 메서드를 구현
배열을 이용해서 구현했기 때문에 위치 삽입, 삭제시 시간이 소모 된다.
대신 idx를 이용한 조회는 O(1)
ensureCapacity(N)
trimToSize()
add(idx, Object)
구현체 LinkedList
Collection, List 메서드를 구현
양쪽 노드를 참조하는 참조값으로 구현했기 때문에 위치를 알고 있다면 삽입, 삭제시 빠르다.
대신 idx를 이용한 조회는 O(n)
Queue의 구현체로 이용됨
isEmpty()
peek()
peekFirst()
peekLast()
offer(Object)
offerFirst(Object)
offerLast(Object)
poll()
pollFirst()
pollLast()
인터페이스 Set <- (HashSet, TreeSet)
✔ 요소
add(Object)
remove(Object)
✔ 조회
contains(Object)
구현체 HashSet
중복을 판단하기 위해 equals(), hashCode()를 호출한다.
구현체 TreeSet
레드 - 블랙트리로 구현되어 있다.
정렬된 위치에 Object를 저장한다. 정렬되어 있기 때문에 조회, 범위 조회에서 이점을 갖는다.
정렬을 위해 Comparator를 생성자에 부여하거나, Object가 Comparable을 구현하고 있어야 한다.
✔ 단일 조회
first()
last()
higher(Object)
ceiling(Object) - Object 포함 검색
floor(Object) - Object 포함 검색
lower(Object)
✔ 범위 조회
headSet(Object) - Object가 head(가장 큰 값)
headSet(Object, boolean) - Object를 포함할지 boolean으로 결정
tailSet(Object) - Object가 tail(가장 작은 값)
tailSet(Object, boolean) - Object를 포함할지 boolean으로 결정
subSet(Object , Object)
subSet(Object, boolean, Object, boolean) - Object를 포함할지 boolean으로 결정
인터페이스 Map
✔ 전체
clear()
isEmpty()
size()
✔ 요소
get(key)
put(key, value)
remove(key)
✔ 조회
containsKey(key)
containsValue(value)
✔ 변환
keySet()
values()
entrySet()
인터페이스 Map.Entry
getKey()
getValue()
setValue(value)
구현체 HashMap
getOrDefault(key, value) - 키가 있다면 value반환, 없다면 매개변수 value로 생성, 반환
구현체 TreeMap
하나를 찾을 경우 반환은 Entry, Key (메서드 접미사로 지정)
범위로 찾을 경우 반환은 Map
정렬을 위해 Comparator를 생성자에 부여하거나, Object가 Comparable을 구현하고 있어야 한다.
✔ 조회 - Entry, Key
firstEntry(key)
firstKey(key)
lastEntry(key)
lastKey(key)
키를 포함하지 않고 검색
higherEntry(key)
higherKey(key)
키를 포함하여 검색
ceilingEntry(key)
ceilingKey(key)
키를 포함하여 검색
floorEntry(key)
floorKey(key)
키를 포함하지 않고 검색
lowerEntry(key)
lowerKey(key)
✔ 범위 조회 - Map
headMap(key)
headMap(key, boolean)
tailMap(key)
tailMap(key, boolean)
subMap(key, key)
subMap(key, boolean, key, boolean)