OS | Windows 10 Home 64bit 버전 1903 (OS 빌드 18362.836) |
JAVA | 8 |
# 구조
#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 의 상위호환이라고 보면된다.
#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 메소드를 재정의 해야 한다
객체 저장 시 정렬이 진행되는 데, 사용자 클래스는 정렬기준을 찾을 수 없기 때문에 오류가 발생하기 때문이다
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
작성 대기중..
'03. JAVA > 기초' 카테고리의 다른 글
18. 자바 8 (JAVA 8) - Stream API 를 이용하여 2개의 배열 합치기 (0) | 2021.09.17 |
---|---|
17. 자바 8 (JAVA 8) - 인터페이스 default 메소드 정의하기 (0) | 2021.07.07 |
05. 자바 8 (JAVA 8) - SOLID 원칙 (0) | 2020.09.06 |
11. 자바 8 (Java 8) - ObjectMapper, JsonPath, ModelMapper (1) | 2020.08.24 |
10. 자바 8 (Java 8) - Stream Lambda (0) | 2020.08.11 |