03. JAVA/기초

09. 자바 8 (Java 8) - Collection 과 Map [미완성]

THE HEYDAZE 2020. 8. 31. 02:24
OS Windows 10 Home 64bit 버전 1903 (OS 빌드 18362.836)
JAVA 8

 

# 구조

Collection 구조

 

Collection 과 Map

위 2개 그림 출처 : https://postitforhooney.tistory.com/entry/JavaCollection-Java-Collection-Framework%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4%EB%A5%BC-%ED%86%B5%ED%95%B4-Data-Structure-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

전체 요약
Collection & Map.xlsx
0.01MB

 

#1. List - ArrayList

1. 객체를 인덱스로 관리한다

2. 객체를 저장하면 자동으로 인덱스가 부여된다

3. 저장 순서가 존재한다

4. 객체를 저장하면 자동으로 용량이 증가한다

5. 중복된 요소를 가질 수 있다

6. 객체를 자주 추가하거나 삭제할 때 LinkedList 보다 비효율적이다

순차적으로 추가/삭제 = add(E elem) 중간에 추가/삭제 = add(in index, E elem) 검색 = get(int index)
빠름 느림 빠름

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가



  add(E elem)   elem 를 마지막에 추가한다
  해당 리스트를 변경한다
boolean
  add(int index, E elem)   index 위치에 elem 를 추가한다
  해당 리스트를 변경한다
void
  addAll(Collection collect)   collect 를 모두 추가한다
  해당 리스트를 변경한다
boolean
  addAll(int index, Collection collect)   index 위치부터 collect 를
  모두 추가 한다
  해당 리스트를 변경한다
boolean
  set(int index, E elem)   index 위치를 elem 로 대체한다
  해당 리스트를 변경한다
E
검색
  size()   리스트의 개수를 구한다 int
  get(int index)   index 위치의 요소를 리턴한다 E
  contains(Object obj)   리스트에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsAll(Collection collect)   리스트가 collect 요소를 모두 가지고
  있는 지 확인한다
boolean
  isEmpty()   리스트가 빈 값 [ ] 인지 확인 한다 boolean
  indexOf(Object obj)   리스트에서 obj 와 같은 요소를 찾아
  인덱스를 리턴한다 (못찾는 경우 -1 리턴)
int
  lastIndexOf(Object obj)   역순으로 리스트에서 obj 와
  같은 요소를 찾아 인덱스를 리턴한다
  (못찾는 경우 -1 리턴)
int
  iterator()
  Iterator<E> 반복자를 리턴한다 Iterator<E>
  listIterator()   리스트 이터레이터를 리턴한다 ListIterator<E>
  toArray()   리스트를 Objec[] 배열로 리턴한다 Object[]
  toArray(new E[0])   리스트를 E[] 배열로 리턴한다 E[]
  subList(int indexA, int indexB)   indexA 이상 indexB 미만의 요소를 리턴 List<E>
  sort(Comparator<E> comparator)   comparator 를 기준으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.naturalOrder())   오름차순으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.reverseOrder())   내림차순으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.comparing(E::getField))   E 의 해당 필드명으로 오름차순 정렬한다
  해당 리스트를 변경한다
void
  replaceAll(UnaryOperator<E> operator)   리스트의 모든 요소들을 operator 로
  변경한다
  해당 리스트를 변경한다
void
  retainAll(Collection<E> collect)   collect 와 같은 요소들만 갖는다
  해당 리스트를 변경한다
boolean
  forEach(Consumer<E> consumer)   consumer 를 이용하여 반복문 처리한다 void
  stream()   Stream<E> 로 리턴한다 Stream<E>
  parallelStream()   Stream<E> 로 리턴한다 (병렬 처리) Stream<E>
삭제   clear()   리스트를 비운다 [ ]
  해당 리스트를 변경한다
void
  remove(Object obj)   obj 와 같은 요소를 삭제한다
  해당 리스트를 변경한다
boolean
  remove(int index)   index 위치의 요소를 삭제한다
  해당 리스트를 변경한다
E
  removeIf(Predicate<E> predicate)   predicate 가 true 인 경우에만 삭제한다
  해당 리스트를 변경한다
boolean
  removeAll(Collection collect)   collect 와 같은 요소들을 삭제한다
  해당 리스트를 변경한다
boolean

 

#2. List - LinkedList

1. 객체를 인덱스로 관리한다

2. 객체를 저장하면 자동으로 인덱스가 부여된다

3. 저장 순서가 존재한다

4. 객체를 저장하면 자동으로 용량이 증가한다

5. 중복된 요소를 가질 수 있다

6. 객체를 추가하거나 삭제할 때 ArrayList 보다 효율적이다

순차적으로 추가/삭제 = add(E elem) 중간에 추가/삭제 = add(in index, E elem) 검색 = get(int index)
느림 빠름 느림

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가   add(E elem)   elem 를 마지막에 추가한다
  해당 리스트를 변경한다
boolean
  add(int index, E elem)   index 위치에 elem 를 추가한다
  해당 리스트를 변경한다
void
  addFirst(E elem)   첫 번째 위치에 elem 를 추가한다
  해당 리스트를 변경한다
void
  addLast(E elem)   마지막 위치에 elem 를 추가한다
  해당 리스트를 변경한다
void
  addAll(Collection<E> collect)   collect 의 모든 요소들을 추가한다
  해당 리스트를 변경한다
boolean
  addAll(int index, Collection<E> collect)   index 위치부터 collect 의 모든
  요소들을 추가한다
  해당 리스트를 변경한다
boolean
  offer(E elem)   elem 를 마지막 위치에 추가한다
  해당 리스트를 변경한다
boolean
  offerFirst(E elem)   elem 를 첫 번째 위치에 추가한다
  해당 리스트를 변경한다
boolean
  offerLast(E elem)   elem 를 마지막 위치에 추가한다
  해당 리스트를 변경한다
boolean
  push(E elem)   elem 를 첫 번째 위치에 추가한다
  해당 리스트를 변경한다
void
검색   size()   리스트의 개수를 구한다 int
  get(int index)   index 위치의 요소를 리턴한다 E
  getFirst()   첫 번째 위치에 요소를 리턴한다 E
  getLast()   마지막  위치에 요소를 리턴한다 E
  contains(Object obj)   리스트에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsAll(Collection<E> collect)   리스트가 collect 요소를 모두 가지고
  있는 지 확인한다
boolean
  isEmpty()   리스트가 빈 값 [ ] 인지 확인 한다 boolean
  indexOf(Object obj)   리스트에서 obj 와 같은 요소를 찾아
  인덱스를 리턴한다 (못찾는 경우 -1 리턴)
int
  lastIndexOf(Object obj)   역순으로 리스트에서 obj 와
  같은 요소를 찾아 인덱스를 리턴한다
  (못찾는 경우 -1 리턴)
int
  iterator()   Iterator<E> 반복자를 리턴한다 Iterator<E>
  toArray()   리스트를 Objec[] 배열로 리턴한다 Object[]
  toArray(new E[0])   리스트를 E[] 배열로 리턴한다 E[]
  subList(int indexA, int indexB)   indexA 이상 indexB 미만의 요소를 리턴 List<E>
  sort(Comparator<E> comparator)   comparator 를 기준으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.naturalOrder())   오름차순으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.reverseOrder())   내림차순으로 정렬한다
  해당 리스트를 변경한다
void
  sort(Comparator.comparing(E::getField))   E 의 해당 필드명으로 오름차순 정렬한다
  해당 리스트를 변경한다
void
  replaceAll(UnaryOperator<E> operator)   리스트의 모든 요소들을 operator 로
  변경한다
  해당 리스트를 변경한다
void
  retainAll(Collection<E> collect)   collect 와 같은 요소들만 갖는다
  해당 리스트를 변경한다
boolean
  element()   첫 번째 위치에 요소를 리턴한다 E
  peek()   첫 번째 위치에 요소를 리턴한다 E
  peekFirst()   첫 번째 위치에 요소를 리턴한다
E
  peekLast()   마지막 위치에 요소를 리턴한다 E
  poll()   첫 번째 위치에 요소 삭제 후 리턴한다
  해당 리스트를 변경한다
E
  pollFirst()   첫 번째 위치에 요소를 삭제 후 리턴한다
  해당 리스트를 변경한다
E
  pollLast()   마지막 위치에 요소를 삭제 후 리턴한다
  해당 리스트를 변경한다
E
  pop()   첫 번째 위치에 요소 삭제 후 리턴한다
  해당 리스트를 변경한다
E
  forEach(Consumer<E> consumer)   consumer 를 이용하여 반복문 처리한다 void
  stream()   Stream<E> 로 리턴한다 Stream<E>
  parallelStream()   Stream<E> 로 리턴한다 (병렬 처리) Stream<E>
삭제   push(E elem)   첫 번째 위치에 요소를 삭제한다
  해당 리스트를 변경한다
void
  clear()   리스트를 비운다 [ ]
  해당 리스트를 변경한다
void
  remove(Object obj)   obj 와 같은 요소를 삭제한다
  해당 리스트를 변경한다
boolean
  remove(int index)   index 위치의 요소를 삭제한다
  해당 리스트를 변경한다
E
  removeIf(Predicate<E> predicate)   predicate 가 true 인 경우에만 삭제한다
  해당 리스트를 변경한다
boolean
  removeAll(Collection collect)   collect 와 같은 요소들을 삭제한다
  해당 리스트를 변경한다
boolean

 

#3. List- Vector

1. Vector 에서는 synchronized 를 사용하여 Thread safe 가 되지만, 그 만큼의 속도 저하를 일으킨다

2. ArraysList 가 Vector 의 상위호환이라고 보면된다. 

Vector 의 add 메소드

 

#4. Set - HashSet

1. List 와 달리 index 로 저장하지 않기 때문에 순서없이 저장하고, 동일한 객체는 중복 저장하지 않는다

2. 동일한 객체는 Object 의 메소드인 hashCode 의 리턴 값이 서로 같은 경우를 말한다

(보통 hashCode 와 equals 메소드를 재정의하여 유일한 필드를 hashCode 의 리턴값으로 설정한다)

3. null 또 한 1개만 가질 수 있다

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가   add(E elem)   elem 를 마지막에 추가한다
  해당 리스트를 변경한다
boolean
  addAll(Collection<E> collect)   collect 의 모든 요소들을 추가한다
  해당 리스트를 변경한다
boolean
검색   size()   리스트의 개수를 구한다 int
  contains(Object obj)   리스트에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsAll(Collection<E>  collect)   리스트가 collect 요소를 모두 가지고
  있는 지 확인한다
boolean
  isEmpty()   리스트가 빈 값 [ ] 인지 확인 한다 boolean
  iterator()   Iterator<E> 반복자를 리턴한다 Iterator<E>
  toArray()   리스트를 Objec[] 배열로 리턴한다 Objec[]
  toArray(new E[0])   리스트를 E[] 배열로 리턴한다 E[]
  retainAll(Collection<E> collect)   collect 와 같은 요소들만 갖는다
  해당 리스트를 변경한다
boolean
  forEach(Consumer<E> consumer)   consumer 를 이용하여 반복문 처리한다 void
  stream()   Stream<E> 로 리턴한다 Stream<E>
  parallelStream()   Stream<E> 로 리턴한다 (병렬 처리) Stream<E>
삭제   clear()   리스트를 비운다 [ ]
  해당 리스트를 변경한다
void
  remove(Object obj)   obj 와 같은 요소를 삭제한다
  해당 리스트를 변경한다
void
  remove(int index)   index 위치의 요소를 삭제한다
  해당 리스트를 변경한다
E
  removeIf(Predicate<E> predicate)   predicate 가 true 인 경우에만 삭제한다
  해당 리스트를 변경한다
boolean
  removeAll(Collection collect)   collect 와 같은 요소들을 삭제한다
  해당 리스트를 변경한다
boolean

 

#5. Set - TreeSet

1. 이진트리(binary tree) 를 기반으로 만들어졌다

2. 2개의 자식 노드를 참조하기 위한 2개의 변수로 구성된다

3. 객체를 저장하면 자동으로 정렬되는 데, 부모값과 비교해서 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장한다

 

4. Set 인터페이스가 아닌 TreeSet 클래스 타입으로 생성하는 이유는 객체를 찾거나 범위 검색과 관련된 메소드를 사용하기 위해서이다

5. 사용자 클래스를 TreeSet 에 담기 위해서는 반드시 Comparable 인터페이스를 상속 받고서 compareTo 메소드를 재정의 해야 한다

객체 저장 시 정렬이 진행되는 데, 사용자 클래스는 정렬기준을 찾을 수 없기 때문에 오류가 발생하기 때문이다

Comparable 인터페이스 및 매소드 재정의

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가   add(E elem)   elem 를 마지막에 추가한다
  해당 리스트를 변경한다
boolean
  addAll(Collection<E> collect)   collect 의 모든 요소들을 추가한다
  해당 리스트를 변경한다
boolean
검색
  size()   리스트의 개수를 구한다 int
  contains(Object obj)   리스트에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsAll(Collection<E>  collect)   리스트가 collect 요소를 모두 가지고
  있는 지 확인한다
boolean
  isEmpty()   리스트가 빈 값 [ ] 인지 확인 한다 boolean
  iterator()   Iterator<E> 반복자를 리턴한다 Iterator<E>
  toArray()   리스트를 Objec[] 배열로 리턴한다 Objec[]
  toArray(new E[0])   리스트를 E[] 배열로 리턴한다 E[]
  retainAll(Collection<E> collect)   collect 와 같은 요소들만 갖는다
  해당 리스트를 변경한다
boolean
  forEach(Consumer<E> consumer)   consumer 를 이용하여 반복문 처리한다 void
  stream()   Stream<E> 로 리턴한다 Stream<E>
  parallelStream()   Stream<E> 로 리턴한다 (병렬 처리) Stream<E>
  first()   제일 낮은 객체를 리턴 E
  last()   제일 높은 객체를 리턴 E
  lower(E elem)   해당 객체보다 바로 아래 객체를 리턴 E
  higher(E elem)   해당 객체보다 바로 위 객체를 리턴 E
  floor(E elem)   해당 객체와 동등한 객체가 있으면 리턴
  없으면 해당 객체의 바로 아래 객체를 리턴
E
  ceiling(E elem)   해당 객체와 동등한 객체가 있으면 리턴
  없으면 해당 객체의 바로 위 객체를 리턴
E
  pollFirst()   제일 낮은 객체를 리턴하고 리스트에서 삭제
  해당 리스트를 변경한다
E
  pollLast()   제일 높은 객체를 리턴하고 리스트에서 삭제
  해당 리스트를 변경한다
E
  subSet(E fromElem, E toElem)   fromElem 이상 toElem 미만 요소를 리턴한다 SortedSet
<E>
  subSet(
    E fromElem, boolean include,
    E toElem, boolean include
  )
  fromElem ~ toElem 요소를 리턴한다

  include 가 true 시  포함한다 ( >=, <= )
  include 가 false 시 포함하지 않는다 ( >, < )

SortedSet
<E>
  tailSet(E fromElem)   fromElem 요소 부터 마지막 요소까지 리턴

  fromElem 요소 포함
SortedSet
<E>
  tailSet(E fromElem, boolean include)   fromElem 요소 부터 마지막 요소까지 리턴

  include true 시 fromElem 포함
  include flase 시 fromElem 미포함
Navigable
Set<E>
삭제   clear()   리스트를 비운다 [ ]
  해당 리스트를 변경한다
void
  remove(Object obj)   obj 와 같은 요소를 삭제한다
  해당 리스트를 변경한다
void
  remove(int index)   index 위치의 요소를 삭제한다
  해당 리스트를 변경한다
E
  removeIf(Predicate<E> predicate)   predicate 가 true 인 경우에만 삭제한다
  해당 리스트를 변경한다
boolean
  removeAll(Collection collect)   collect 와 같은 요소들을 삭제한다
  해당 리스트를 변경한다
boolean

 

#6. Set -  HashSet - LinkedHashSet

1. HashSet 과 동일하다

2. 차이점은 HashSet 은 저장을 할 때 순서가 없지만, LinkedHashSet 은 입력된 순서대로 저장이 된다 

3. FIFO (First In First Out) 선입선출 방식 이다

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가   add(E elem)   elem 를 마지막에 추가한다
  해당 리스트를 변경한다
boolean
  addAll(Collection<E> collect)   collect 의 모든 요소들을 추가한다
  해당 리스트를 변경한다
boolean
검색   size()   리스트의 개수를 구한다 int
  contains(Object obj)   리스트에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsAll(Collection<E>  collect)   리스트가 collect 요소를 모두 가지고
  있는 지 확인한다
boolean
  isEmpty()   리스트가 빈 값 [ ] 인지 확인 한다 boolean
  iterator()   Iterator<E> 반복자를 리턴한다 Iterator<E>
  toArray()   리스트를 Objec[] 배열로 리턴한다 Objec[]
  toArray(new E[0])   리스트를 E[] 배열로 리턴한다 E[]
  retainAll(Collection<E> collect)   collect 와 같은 요소들만 갖는다
  해당 리스트를 변경한다
boolean
  forEach(Consumer<E> consumer)   consumer 를 이용하여 반복문 처리한다 void
  stream()   Stream<E> 로 리턴한다 Stream<E>
  parallelStream()   Stream<E> 로 리턴한다 (병렬 처리) Stream<E>
삭제   clear()   리스트를 비운다 [ ]
  해당 리스트를 변경한다
void
  remove(Object obj)   obj 와 같은 요소를 삭제한다
  해당 리스트를 변경한다
void
  remove(int index)   index 위치의 요소를 삭제한다
  해당 리스트를 변경한다
E
  removeIf(Predicate<E> predicate)   predicate 가 true 인 경우에만 삭제한다
  해당 리스트를 변경한다
boolean
  removeAll(Collection collect)   collect 와 같은 요소들을 삭제한다
  해당 리스트를 변경한다
boolean

 

 

#7. Queue - ArrayDeque

작성 대기중..

 

#8. Queue - PritorityQueue

작성 대기중..

 

#9. Map - HashMap

1. 객체를 key 와 value 로 관리한다

2. key 는 중복이 불가능하지만, value 에 대해서는 중복이 가능하다

3. 없는 key 에 대해서는 null 을 리턴한다

4. 삽입, 검색, 삭제 시간이 매우 빠르다 ( Map > ArrayList )

5. null 입력이 가능하다

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가

  put(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체한다
  해당 맵을 변경한다
E value
  putIfAbsent(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체하지 않는다
  해당 맵을 변경한다
E value
  putAll(Map<E,E> map)   key 가 같은 경우 수정
  key 가 다른 경우 추가
  해당 맵을 변경한다
void
  merge(
    E key,
    E value,
    BiFunction<E,E,E> remappingFunc
  )
  key 가 존재하지 않는 경우
  remappingFunc 에서 리턴 된 E value 를
  추가한다

  key 가 존재하는 경우
  remappingFunc 에서 리턴 된 E value 를
  해당 key 의 value 로 변경한다

  remappingFunc 첫번째 인자는 oldValue
  remappingFunc 두번째 인자는 newValue
  해당 맵을 변경한다
E value
검색   size()   맵의 개수를 구한다 int
  get(Object key)   key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 null 리턴
E value
  getOrDefault(
    Object key,
    E defaultValue
  )
  key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 defaultValue 리턴
E value
  containsKey(Object obj)   맵의 key 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsValue(Object obj)   맵의 Value 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  isEmpty()   맵이 빈 값 { } 인지 확인 한다 boolean
  entrySet()   Entry<E,E> 를 담은 Set 을 리턴한다 Set<Entry
<E,E>>
  keySet()   key 를 담은 Set 을 리턴한다 Set<E>
  values(Collection<E> collect)   value 를 담은 collect 를 리턴한다 Collection
<E>
  replace(E key, E value)   key 에 해당하는 value 를 변경한다
  해당하는 key 가 없는 경우 변화없다
 
  인자로 준 E Value 가 아닌,
  맵 해당 key의 value를 리턴한다

  해당 맵을 변경한다
E value
  replace(E key, E oldValue, E newValue)   key 에 해당하는 oldValue 가 일치하는 경우
  newValue 로 변경한다

  해당하는 key 가 없거나,
  해당 key 의 value 가 oldValue 가 아닌 경우
  false 를 리턴한다

  해당 맵을 변경한다
boolean
  replaceAll(
    BiFunction<E,E,E> remappingFunc
  )
  모든 Map 의 요소들을
  remappingFunc 에서 반환 된 E 로 변경한다
  해당 맵을 변경한다
void
  compute(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재여부를 판단하지 않는다
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfAbsend(
   E key, 
    Function<E,E> mappingFunc
  )
  key 값이 존재 한다면, 
  주로 리턴 된 value 를 리턴하거나,
  new value 를 리턴할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfPresent(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재 하는지 판단 후 
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  forEach(BiConsumer<E,E,E> action)
  map 을 for 문 처럼 순환한다 void
삭제
  clear()   맵을 비운다 { }
  해당 맵을 변경한다
void
  remove(Object key)   key 와 일치하는 요소를 삭제한다
  해당 맵을 변경한다
E value
  remove(Object key, Object value)   key 와 value 가 일치하는 요소를 삭제한다
  해당 맵을 변경한다
boolean

 

 

#10. Map - HashTable

1. 대부분의 기능은 HashMap 과 동일하다

2. 차이점은 HashMap 은 비동기, HashMap 은 동기(synchronize) 이다

3. 단일 Thread 에서는 HashTable < HashMap 성능이 더 좋다

4. 멀티 Thread 에서는 HashTable > HashMap 성능이 더 좋다

5. HashTable 은 객체를 저장하거나 불러올 때 key 가 hashCode 메소드와 equals 메소드를 사용하기 때문에 null 을 사용할 수 없다

6. 내림차순으로 저장된다

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가  put(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체한다
  해당 맵을 변경한다
E value
 putIfAbsent(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체하지 않는다
  해당 맵을 변경한다
E value
  putAll(Map<E,E> map)   key 가 같은 경우 수정
  key 가 다른 경우 추가
  해당 맵을 변경한다
void
  merge(
    E key,
    E value,
    BiFunction<E,E,E> remappingFunc
  )
  key 가 존재하지 않는 경우
  remappingFunc 에서 리턴 된 E value 를
  추가한다

  key 가 존재하는 경우
  remappingFunc 에서 리턴 된 E value 를
  해당 key 의 value 로 변경한다

  remappingFunc 첫번째 인자는 oldValue
  remappingFunc 두번째 인자는 newValue
  해당 맵을 변경한다
E value
검색   size()   맵의 개수를 구한다 int
  get(Object key)   key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 null 리턴
E value
  getOrDefault(
    Object key,
    E defaultValue
  )
  key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 defaultValue 리턴
E value
  containsKey(Object obj)   맵의 key 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsValue(Object obj)   맵의 Value 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  isEmpty()   맵이 빈 값 { } 인지 확인 한다 boolean
  entrySet()   Entry<E,E> 를 담은 Set 을 리턴한다 Set<Entry
<E,E>>
  keySet()   key 를 담은 Set 을 리턴한다 Set<E>
  values(Collection<E> collect)   value 를 담은 collect 를 리턴한다 Collection
<E>
  replace(E key, E value)   key 에 해당하는 value 를 변경한다
  해당하는 key 가 없는 경우 변화없다
 
  인자로 준 E Value 가 아닌,
  맵 해당 key의 value를 리턴한다

  해당 맵을 변경한다
E value
  replace(E key, E oldValue, E newValue)   key 에 해당하는 oldValue 가 일치하는 경우
  newValue 로 변경한다

  해당하는 key 가 없거나,
  해당 key 의 value 가 oldValue 가 아닌 경우
  false 를 리턴한다

  해당 맵을 변경한다
boolean
  replaceAll(
    BiFunction<E,E,E> remappingFunc
  )
  모든 Map 의 요소들을
  remappingFunc 에서 반환 된 E 로 변경한다
  해당 맵을 변경한다
void
  compute(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재여부를 판단하지 않는다
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfAbsend(
    E key, 
    Function<E,E> mappingFunc
  )
  key 값이 존재 한다면, 
  주로 리턴 된 value 를 리턴하거나,
  new value 를 리턴할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfPresent(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재 하는지 판단 후 
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  forEach(BiConsumer<E,E,E> action)   map 을 for 문 처럼 순환한다 void
  elements()   Enumeration<E value> 으로 리턴한다 Enumeration
<E value>
  keys()   Enumeration<E key> 으로 리턴한다 Enumeration
<E key>
삭제   clear()   맵을 비운다 { }
  해당 맵을 변경한다
void
  remove(Object key)   key 와 일치하는 요소를 삭제한다
  해당 맵을 변경한다
E value
  remove(Object key, Object value)   key 와 value 가 일치하는 요소를 삭제한다
  해당 맵을 변경한다
boolean

 

#11. Map - HashMap - LinkedHashMap

1. HashMap 과 대부분 동일하다. 차이점은 순서가 존재한다

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가

  put(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체한다
  해당 맵을 변경한다
E value
  putIfAbsent(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체하지 않는다
  해당 맵을 변경한다
E value
  putAll(Map<E,E> map)   key 가 같은 경우 수정
  key 가 다른 경우 추가
  해당 맵을 변경한다
void
  merge(
    E key,
    E value,
    BiFunction<E,E,E> remappingFunc
  )
  key 가 존재하지 않는 경우
  remappingFunc 에서 리턴 된 E value 를
  추가한다

  key 가 존재하는 경우
  remappingFunc 에서 리턴 된 E value 를
  해당 key 의 value 로 변경한다

  remappingFunc 첫번째 인자는 oldValue
  remappingFunc 두번째 인자는 newValue
  해당 맵을 변경한다
E value
검색   size()   맵의 개수를 구한다 int
  get(Object key)   key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 null 리턴
E value
  getOrDefault(
    Object key,
    E defaultValue
  )
  key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 defaultValue 리턴
E value
  containsKey(Object obj)   맵의 key 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsValue(Object obj)   맵의 Value 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  isEmpty()   맵이 빈 값 { } 인지 확인 한다 boolean
  entrySet()   Entry<E,E> 를 담은 Set 을 리턴한다 Set<Entry
<E,E>>
  keySet()   key 를 담은 Set 을 리턴한다 Set<E>
  values(Collection<E> collect)   value 를 담은 collect 를 리턴한다 Collection
<E>
  replace(E key, E value)   key 에 해당하는 value 를 변경한다
  해당하는 key 가 없는 경우 변화없다
 
  인자로 준 E Value 가 아닌,
  맵 해당 key의 value를 리턴한다

  해당 맵을 변경한다
E value
  replace(E key, E oldValue, E newValue)   key 에 해당하는 oldValue 가 일치하는 경우
  newValue 로 변경한다

  해당하는 key 가 없거나,
  해당 key 의 value 가 oldValue 가 아닌 경우
  false 를 리턴한다

  해당 맵을 변경한다
boolean
  replaceAll(
    BiFunction<E,E,E> remappingFunc
  )
  모든 Map 의 요소들을
  remappingFunc 에서 반환 된 E 로 변경한다
  해당 맵을 변경한다
void
  compute(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재여부를 판단하지 않는다
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfAbsend(
   E key, 
    Function<E,E> mappingFunc
  )
  key 값이 존재 한다면, 
  주로 리턴 된 value 를 리턴하거나,
  new value 를 리턴할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfPresent(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재 하는지 판단 후 
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  forEach(BiConsumer<E,E,E> action)
  map 을 for 문 처럼 순환한다 void
삭제
  clear()   맵을 비운다 { }
  해당 맵을 변경한다
void
  remove(Object key)   key 와 일치하는 요소를 삭제한다
  해당 맵을 변경한다
E value
  remove(Object key, Object value)   key 와 value 가 일치하는 요소를 삭제한다
  해당 맵을 변경한다
boolean

 

 

 

#12. Map - TreeMap

1. TreeMap 은 이진트리(binary tree) 를 기반으로 한 Map Collection 이다.

2. TreeSet 과 같은 구조를 같고 있지만, TreeSet 과의 차이점은 키와 같이 저장된 Map.Entry를 저장하는 것

3. 객체를 저장하면 자동으로 정렬되는 데, Key 값과 비교해서 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장한다

만약 Key 값이 사용자 클래스인 경우 반드시 Comparable 인터페이스를 상속 받고서 compareTo 메소드를 재정의 해야 한다

4. TreeSet과 동일하게 낮은 값이 왼쪽에 높은 값이 오른쪽 노드에 위치한다.

 

E 는 해당 요소의 타입을 의미함

액션   메소드   설명 return
추가  put(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체한다
  해당 맵을 변경한다
E value
 putIfAbsent(E key, E value)   key와 value 추가, 저장되면 value 를 리턴
  key 가 이미 존재하는 경우 대체하지 않는다
  해당 맵을 변경한다
E value
  putAll(Map<E,E> map)   key 가 같은 경우 수정
  key 가 다른 경우 추가
  해당 맵을 변경한다
void
  merge(
    E key,
    E value,
    BiFunction<E,E,E> remappingFunc
  )
  key 가 존재하지 않는 경우
  remappingFunc 에서 리턴 된 E value 를
  추가한다

  key 가 존재하는 경우
  remappingFunc 에서 리턴 된 E value 를
  해당 key 의 value 로 변경한다

  remappingFunc 첫번째 인자는 oldValue
  remappingFunc 두번째 인자는 newValue
  해당 맵을 변경한다
E value
검색
  size()   맵의 개수를 구한다 int
  get(Object key)   key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 null 리턴
E value
  getOrDefault(
    Object key,
    E defaultValue
  )
  key 에 해당하는 value 를 리턴한다
  해당하는 key 가 없으면 defaultValue 리턴
E value
  containsKey(Object obj)   맵의 key 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  containsValue(Object obj)   맵의 Value 에서 obj 와 같은 요소가 있는 지
  확인 한다
boolean
  isEmpty()   맵이 빈 값 { } 인지 확인 한다 boolean
  entrySet()   Entry<E,E> 를 담은 Set 을 리턴한다 Set<Entry
<E,E>>
  keySet()   key 를 담은 Set 을 리턴한다 Set<E>
  values(Collection<E> collect)   value 를 담은 collect 를 리턴한다 Collection
<E>
  replace(E key, E value)   key 에 해당하는 value 를 변경한다
  해당하는 key 가 없는 경우 변화없다
 
  인자로 준 E Value 가 아닌,
  맵 해당 key의 value를 리턴한다

  해당 맵을 변경한다
E value
  replace(E key, E oldValue, E newValue)   key 에 해당하는 oldValue 가 일치하는 경우
  newValue 로 변경한다

  해당하는 key 가 없거나,
  해당 key 의 value 가 oldValue 가 아닌 경우
  false 를 리턴한다

  해당 맵을 변경한다
boolean
  replaceAll(
    BiFunction<E,E,E> remappingFunc
  )
  모든 Map 의 요소들을
  remappingFunc 에서 반환 된 E 로 변경한다
  해당 맵을 변경한다
void
  compute(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재여부를 판단하지 않는다
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfAbsend(
    E key, 
    Function<E,E> mappingFunc
  )
  key 값이 존재 한다면, 
  주로 리턴 된 value 를 리턴하거나,
  new value 를 리턴할 때 사용한다
  해당 맵을 변경한다
E value
  computeIfPresent(
    E key, 
    BiFunction<E,E,E> remappingFunc
  )
  key 값이 존재 하는지 판단 후 
  주로 리턴 된 value 를 수정 할 때 사용한다
  해당 맵을 변경한다
E value
  forEach(BiConsumer<E,E,E> action)   map 을 for 문 처럼 순환한다 void
  firstKey()   첫 번째 요소의 key 를 리턴한다 E key
  firstEntry()   첫 번째 요소를
  Map.Entry<E key, E value>로
  리턴한다
Entry<E, E>
  lastKey()   마지막 요소의 key 를 리턴한다 E key
  lastEntry()   마지막 요소를 
  Map.Entry<E key, E value>로 리턴한다
Entry<E, E>
  lowerKey(E key)   해당 key 값 보다 바로 아래 key 를 리턴한다

  첫번째 요소와 가까울 수록 낮은 key
E key
  lowerEntry(E key)   해당 key 값 보다 바로 아래 요소를
  Map.Entry<E key, E value>로 리턴한다

  첫번째 요소와 가까울 수록 낮은 key
Entry<E, E>
  higherKey(E key)   해당 key 값 보다 바로 위 key 를 리턴한다

  마지막 요소와 가까울 수록 높은 key
E key
  higherEntry(E key)   해당 key 값 보다 바로 위 요소를
  Map.Entry<E key, E value>로 리턴한다

  마지막 요소와 가까울 수록 높은 key
Entry<E, E>
  floorKey(E key)   해당 key 와 동일한 key 가 있으면 key 리턴

  없으면 해당 key 값 보다 바로 아래 key 리턴
E key
  floorEntry(E key)   해당 key 와 동일한 key 가 있으면 
  Map.Entry<E key, E value>로 리턴

  없으면 해당 key 값 보다 바로 아래 
  Map.Entry<E key, E value>로 리턴
Entry<E, E>
  ceilingKey(E key)   해당 key 와 동일한 key 가 있으면 key 리턴

  없으면 해당 key 값 보다 바로 위 key 리턴
E key
  ceilingEntry(E key)   해당 key 와 동일한 key 가 있으면 
  Map.Entry<E key, E value>로 리턴

  없으면 해당 key 값 보다 바로 위
  Map.Entry<E key, E value>로 리턴
Entry<E, E>
  pollFirstEntry()   첫 번째에 위치하는 요소를
  Map.Entry<E key, E value>로 리턴 후
  맵에서 삭제한다
  해당 맵을 변경한다
Entry<E, E>
  pollLastEntry()   마지막에 위치하는 요소를
  Map.Entry<E key, E value>로 리턴 후
  맵에서 삭제한다
  해당
맵을 변경한다
Entry<E, E>
  subMap(
    E formKey,
    E toKey
  )
  fromKey 이상 toKey 미만의 요소를 리턴 SortedMap
<E,E>
  subMap(
    E formKey, boolean include
    E toKey, boolean include
  )
  fromKey ~ toKey 요소를 리턴한다

  include 가 true 시  포함한다 ( >=, <= )
  include 가 false 시 포함하지 않는다 ( >, < )
Navigable
Map<E,E>
  tailMap(E fromKey)   fromKey 요소 부터 마지막 요소까지 리턴

  fromKey 요소 포함
SortedMap
<E,E>
  tailMap(E fromKey, boolean include)   fromKey 요소 부터 마지막 요소까지 리턴

  include true 시 fromKey 요소 포함
  include false시 fromKey 요소 미포함
Navigable 
Map<E,E>
  headMap(E toKey)   toKey 까지의 요소를 리턴

  toKey 요소는 미포함  
SortedMap
<E,E>
  headMap(E toKey, boolean include)   toKey 까지의 요소를 리턴

  include true 시 toKey요소 포함
  include false시 toKey 요소 미포함
Navigable 
Map<E,E>
  descendingMap()   key 기준으로 내림차순으로 정렬 후
  NavigableMap<E key, E value> 로 리턴
Navigable 
Map<E,E>
  descendingKeySet()   key 기준으로 내림차순으로 정렬 후
  NavigableSet<E key> 로 리턴
Navigable 
Set<E key>
  navigableKeySet()   Key 기준으로 오름차순으로 정렬 후
  NavigableSet<E key> 로 리턴
Navigable 
Set<E key>
삭제   clear()   맵을 비운다 { }
  해당 맵을 변경한다
void
  remove(Object key)   key 와 일치하는 요소를 삭제한다
  해당 맵을 변경한다
E value
  remove(Object key, Object value)   key 와 value 가 일치하는 요소를 삭제한다
  해당 맵을 변경한다
boolean

 

#13. Map - Properties

작성 대기중..