일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- fullcalendar
- jscalendar
- namedQuery
- 대량쿼리
- JQuery
- javaservlet
- 페이징
- 스프링데이터흐름
- fetchjoin
- Hibernate
- paging
- JPQL
- joinfetch
- 자바서블릿
- jQueryUI
- jQuery값전송
- 페치조인
- 제너릭
- javascriptcalendar
- 제네릭
- LIST
- springflow
- 엔티티직접사용
- calendar
- jQuery값전달
- values()
- JPA
- 벌크연산
- 프로젝트생성
- Generic
- Today
- Total
가자공부하러!
Java_8_Collection Methods 본문
1. List - Oracle - doc - List
> 선언 및 초기화
1 2 3 4 5 6 7 8 9 10 11 12 | ListExam() { //List 초기화 방법 1. Arrays.asList == 배열을 List로 바꿔주는 메소드 List<Integer> lst = new ArrayList<>( Arrays.asList(1,2,3,4)); //List 초기화 방법 2. add 메소드 활용 List<Integer> lst2 = new ArrayList<>(); lst2.add(3); lst2.add(2); lst2.add(1); lst2.add(2, 55); } | cs |
> 저장된 데이터 꺼내기
1 2 3 4 5 6 7 8 9 10 11 | //List 데이터 꺼내기 방법 1. forEach 활용 for(int i : lst) System.out.print(i + " "); System.out.println(); //List 데이터 꺼내기 방법 2. Iterator 활용 Iterator itr = lst2.iterator(); while(itr.hasNext()) { System.out.print(itr.next()+ " "); } System.out.println(); | cs |
- 수행 결과 : 1 2 3 4
3 2 55 3
> List에 저장된 요소 정렬
1 2 3 4 5 6 7 8 9 10 11 12 13 | void sortList() { //오름차순 정렬 Collections의 static 메소드 sort 활용 Collections.sort(lst2); for(int i : lst2) System.out.print(i + " "); System.out.println(); //내림차순 정렬 Collections의 static 메소드 reverse 활용 Collections.reverse(lst2); for(int i : lst2) System.out.print(i + " "); } | cs |
- 수행결과 : 1 2 3 55
55 3 2 1
> boolean add(E e)
- e를 list에 추가
> void add(int index, E element)
- list의 index번 째 위치에 element를 삽입한다.
- ex_ { 1, 2, 3 }에 add(1, 10) 하면? > { 1, 10, 2, 3 }
> boolean remove(Object o)
E remove(int index)
- List의 왼쪽에서 가장 가까운 o를 찾아내서 삭제
- index에 있는 밸류 삭제
> boolean removeAll(Collection<?> c)
- List에 저장된 모든 값 중 컬렉션 c에 저장된 모든 value와 일치하는 value 삭제
> void clear()
- List에 저장된 모든 값 삭제
> <T> T[] toArray(T[] a)
Object[] toArray()
- list의 모든 값을 <T> 타입의 array로 리턴
- T에 int, double 요런거 쓰면 안되고 Integer, Double 요렇게 쓰셔야 해요
- 아니면 Object로 받으실 수도 있는데 안쓰시는게 좋을 듯
> int indexOf(Object o)
int lastIndexOf(Object o)
- o와 일치하는 value가 저장된 index를 반환함
- indexOf는 왼쪽부터 서치, lastIndexOf는 오른쪽부터 서치
- o가 없는 경우 -1을 반환
> int size()
- List에 저장된 value의 개수를 int타입으로 반환
> E set(int index, E element)
- List에 저장된 index번 째 value를 element로 변경
> E get(int index)
- List에 저장 된 index번 째 value를 반환
> default void sort(Comparator<? super E> c)
- Collections.sort()로 정렬하기 어려울 때 사용
- Comparator를 구현해서 정렬 기준을 결정하고 정렬
ㄴ implements Comparable<T>
ㄴ @Override Comparator() 작성
ㄴ Collections.sort()
> boolean addAll(int index, Collection<? extends E> c)
boolean addAll(Collection<? extends E> c)
- 컬렉션 c의 값들을 List의 index에 삽입하거나 맨 뒤에 추가
> boolean equals(Object o)
boolean contains(Object o)
boolean containsAll(Collection<?> c)
- List가 o와 같은지, o를 포함하고 있는지 true/false 리턴
> default void replaceAll(UnaryOperator<E> operator)
- UnaryOperator를 implement한 class를 작성해서 operator 사용 사용 예 ( w3resource.com )
- 사용 예 2 : ListExam.java 중 removeAllWithOperator 메소드
> Iterator<E> iterator()
- 타입E를 갖는 List의 iterator를 반환한다.
- Iterator 객체를 생성해서 사용해야 한다.
> ListIterator<E> listIterator(int index)
- List에서 제공하는 인터페이스로, 타입E를 갖는 ListIterator를 반환한다.
- List에 포함 된 모든 객체를 양방향으로 탐색하면서 객체를 꺼낼 수 있다.
ㄴ hasNext()와 next() 뿐 만 아니라 hasPrevious()와 previous()도 있다.
ㄴ 일반적으로 next를 사용하기 전에는 previous가 작동하지 않는다.
ㄴ ListIterator를 생성할 때 index값을 인수로 전달하면 previous 부터 작동 가능.
- 이 메소드를 활용해 만들어진 반복자(Iterator)는 index번 째 자료부터 사용한다.
> List<E> subList(int fromIndex, int toIndex)
- fromIndex 부터 toIndex 전 까지 값을 List 형태로 반환
> int hashCode()
- hashCode()메소드는 Object class에 포함되어 있는 메소드.
- 각 객체의 값에 따른 주소와 관련있는 고유번호를 리턴한다.
> boolean isempty()
- 메소드를 호출한 List 변수가 어떠한 요소도 가지고 있지 않다면 true 반환
> boolean retainAll(Collection<?> c)
- Collection c가 갖고있는 값과 같은 값이 있으면 유지하고, 다른 값이 있으면 삭제한다.
> default SpIterator<E> spIterator()
- SpIterator는 분할할 수 있는 반복자이다. 뭐래 뭐야 이건...무서워...
ㄴ Iterator 보다 병렬 작업에 특화된 인터페이스
- 병렬로 처리하고자 할 때의 세부사항을 설정하기 쉽다.
Modifier and Type |
Method Name |
Description |
boolean |
add(E e) |
Appends the specified element to the end of this list (optional operation). |
e를 list에 추가한다 | ||
void |
add(int index, E element) |
Inserts the specified element at the specified position in this list (optional operation). |
element를 list의 index에 추가한다 |
||
<T> T[] |
toArray(T[] a) |
Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array. |
해당 list의 모든 값을 <T> 타입의 array로 리턴 |
||
Object[] |
toArray() |
Returns an array containing all of the elements in this list in proper sequence (from first to last element). |
list의 모든 값을 array로 리턴 |
||
int |
indexOf(Object o) |
Returns the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element. |
왼쪽에서 가장 가까운 o의 index를 int 타입으로 리턴 | ||
int |
lastIndexOf(Object o) |
Returns the index of the last occurrence of the specified element in this list, or -1 if this list does not contain the element. |
오른쪽에서 가장 가까운 o의 index를 int 타입으로 리턴 | ||
int |
size() |
Returns the number of elements in this list. |
list의 값 개수를 int 타입으로 리턴 |
||
E |
set(int index, E element) |
Replaces the element at the specified position in this list with the specified element (optional operation). |
index번 째 값을 element로 변경 |
||
E |
get(int index) |
Returns the element at the specified position in this list. |
index번 째 값을 리턴 |
||
default void |
sort(Comparator<? super E> c) |
Sorts this list according to the order induced by the specified Comparator. |
기본 정렬 기준 외에 다른 정렬 기준을 적용하고자 할 때 Comparator 구현해서 정렬(ex_사용자 지정 객체) |
||
boolean |
addAll(int index, Collection<? extends E> c) |
Inserts all of the elements in the specified collection into this list at the specified position (optional operation). |
c의 모든 값을 List의 index 위치에 삽입 |
||
boolean |
addAll(Collection <? extends E> c) |
Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's iterator (optional operation). |
c의 모든 값을 List의 마지막에 추가 |
||
boolean |
equals(Object o) |
Compares the specified object with this list for equality. |
o와 현재 list가 같은지 비교 |
||
boolean |
contains(Object o) |
Returns true if this list contains the specified element. |
현재 list가 o를 포함하고 있는지 비교 | ||
default void |
replaceAll(UnaryOperator<E> operator) |
Replaces each element of this list with the result of applying the operator to that element. |
UnaryOperator를 implement한 class를 작성해서 operator 사용 사용 예 ( w3resource.com ) |
||
boolean |
removeAll(Collection<?> c) |
Removes from this list all of its elements that are contained in the specified collection (optional operation). |
List에 저장된 모든 값 중 컬렉션 c에 저장된 모든 value와 일치하는 value 삭제 | ||
boolean |
remove(Object o) |
Removes the first occurrence of the specified element from this list, if it is present (optional operation). |
List의 왼쪽에서 가장 가까운 o를 찾아내서 삭제 | ||
E |
remove(int index) |
Removes the element at the specified position in this list (optional operation). |
List에 저장된 값 중 index번 째 값 삭제 |
||
void |
clear() |
Removes all of the elements from this list (optional operation). |
List에 저장된 모든 값 삭제 | ||
Iterator<E> |
iterator() |
Returns an iterator over the elements in this list in proper sequence. |
타입E를 갖는 List의 iterator를 반환 Iterator 객체를 생성해서 사용해야 한다. |
||
ListIterator<E> |
listIterator(int index) |
Returns a list iterator over the elements in this list (in proper sequence), starting at the specified position in the list. |
ListIterator의 시작 번호를 index로 설정해서 생성 |
||
ListIterator<E> |
listIterator() |
Returns a list iterator over the elements in this list (in proper sequence). |
List에서 제공하는 인터페이스로, 타입E를 갖는 ListIterator를 반환한다. next 뿐 만 아니라 previous 가능 | ||
List<E> |
subList(int fromIndex, int toIndex) |
Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive. |
fromIndex 부터 toIndex 전 까지 값을 List 형태로 반환 | ||
int |
hashCode() |
Returns the hash code value for this list. |
각 객체의 값에 따른 주소와 관련있는 고유번호를 리턴 |
||
default Spliterator<E> |
spliterator() |
Creates a Spliterator over the elements in this list. |
분할할 수 있는 반복자 생성. Iterator 보다 병렬 작업에 특화된 인터페이스 |
||
boolean |
retainAll(Collection<?> c) |
Retains only the elements in this list that are contained in the specified collection (optional operation). |
Collection c가 갖고 있는 값과 같은 값이 있으면 유지하고, 다른 값이 있으면 삭제한다. |
||
boolean |
containsAll(Collection<?> c) |
Returns true if this list contains all of the elements of the specified collection. |
List가 o와 같은지, o를 포함하고 있는지 true/false 리턴 | ||
boolean |
isEmpty() |
Returns true if this list contains no elements. |
메소드를 호출한 List가 어떠한 요소도 가지고 있지 않다면 true 반환 |
2. Map - Oraclee - doc - Map
2-2. Methods in List - 실습코드 링크
2-3. Methods ( docs.oracle.com )
* Mapping?
> key와 value 쌍을 짝지어 저장하는 데이터 구조
** Map?
> 키(key)와 값(value)이 한 쌍을 이룬다.
> Map은 쌍으로 이루어진 데이터의 집합이다.
> 순서는 유지되지 않는다.
> 키(key)는 중복을 허용하지 않는다.
- 현재 저장된 키값과 중복되는 키-값 쌍을 입력(put)한 경우?
ㄴ 기존의 존재하는 해당 키의 값이 새로운 값으로 변경된다.
> 값(value)은 중복을 허용한다.
> HashMap
- key와 value에 null값 허용
> HashTable
- HashMap보다 느리지만 동기화를 지원
- key와 value에 null값 허용되지 않음
> TreeMap
- 이진검색트리의 형태
- 정렬된 순서로 쌍을 저장하므로 빠른 검색 가능
- 저장 시 정렬(오름차순)을 하기 때문에 저장시간이 다소 오래 소요
> LinkedHashMap
- HashMap을 상속받았기 때문에 HashMap과 유사
- 순서가 저장됨
> Map 선언 및 초기화 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class MapExam { // Map 선언 및 초기화 방법 1 : class에서 선언과 동시에 초기화 public static final Map<Integer, String> lnkMap; static { lnkMap = new LinkedHashMap<Integer, String>(); lnkMap.put(3, "ㄹㄹ"); lnkMap.put(4, "ㄹㄹ"); lnkMap.put(5, "ㄹㄹ"); } public MapExam() { // Map 선언 및 초기화 방법 2 : put 메서드 사용 Map<String, String> hshMap = new HashMap<String, String>(); hshMap.put("001","ㅎㅎ"); hshMap.put("002","ㅎㅎ"); hshMap.put("001","gg"); } } | cs |
> entrySet 메소드 활용
- Map에 저장된 Mapping을 Set의 형태( key=valuse )로 반환
1 2 3 4 5 6 7 8 | void useEntrySetMethod() { //toString 메소드를 통한 해쉬맵 요소 출력 System.out.println("hshMap.toString() :\t" + hshMap.toString()); //entrySet 메소드 활용 Set<Entry<String, String>> st1 = hshMap.entrySet(); System.out.println("Set<Entry<String, String>> st1 = hshMap.entrySet();"); System.out.println("st1.toString() :\t" + st1.toString()); } | cs |
hshMap.toString() : {001=gg, 002=ㅎㅎ}
Set<Entry<String, String>> st1 = hshMap.entrySet();
st1.toString() : [001=gg, 002=ㅎㅎ]
> key, value 활용 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void howToUseKeyAndValue() { System.out.println("hshMap.toString() :\t" + hshMap.toString()); // get(K) : K(key)에 해당하는 value를 얻기 위한 메소드 System.out.println("hshMap.get(\"001\") :\t" + hshMap.get("001")); // containsKey(K) : 현재 맵에 해당 key가 있는지 조사 System.out.println("hshMap.containsKey(\"001\") :\t" + hshMap.containsKey("001")); // remove(K) : 현재 맵에서 K에 해당하는 쌍을 제거 hshMap.remove("001"); System.out.println("hshMap.remove(\"001\");"); System.out.println("hshMap.toString() :\t" + hshMap.toString()); } | cs |
hshMap.toString() : {001=gg, 002=ㅎㅎ}
hshMap.get("001") : gg
hshMap.containsKey("001") : true
hshMap.remove("001");
hshMap.toString() : {002=ㅎㅎ}
> void clear()
- Map에 저장된 모든 Mapping을 삭제
> default V compute (K key, BiFunction<? super K, ? super V, ? extends V > remappingFunction)
- 현재 Map의 key 중에 매개변수 key가 있으면?
ㄴ key에 해당하는 value에 BiFunction에 따라 연산한 결과값을 value에 저장하고 해당 값을 반환
- key가 없으면?
ㄴ 매개변수 key를 새로 만들고 key에 해당하는 value에 BiFunction 연산 결과값을 저장하고 해당 값을 반환
ㄴ put(K key, V value)와 유사
> default V computeIfPresent(K key, BiFunction<? super K., ? super V, ? extends V> remappingFunction)
- compute와 동일한 기능
- 차이점 : key가 없으면 동작하지 않고 null을 반환
> default V computeIfAbsent(K key, Fucntion<? super K, ? extends V> mappingFucntion)
- compute와 동일한 기능
ㄴ key가 없으면 put
- 차이점 :
ㄴ key와 쌍을 이루는 value가 이미 있다면?
ㄴ 해당 value를 반환하고 아무런 기능도 하지 않음.
ㄴ key와 쌍을 이루는 value가 null이라면?
ㄴ value에 BiFunction에 따라 값을 저장하고, 저장한 값을 반환
> boolean containsKey(Object key)
- 저장된 Mapping의 key들 중 매개변수로 받은 key가 존재하는지 판단하여 true/false 리턴
> boolean containsValue(Object value)
- 저장된 Mapping의 value들 중 매개변수로 받은 value와 짝인 key값이 한개 이상이면 true 리턴
> boolean equals(Object o)
- 현재 Map과 o가 동일한지 판단
> default void forEach(BiConsumer<? super K, ? super V> action)
- BiConsumer란?
ㄴ 서로 다른 타입의 2개의 인자를 받아 소모한다.
ㄴ Map 에서는 보통 <key, value> 활용
- key, value를 BiConsumer 인자로 주고, action을 처리한다.
- ex) hshMap.forEach( (k, v) -> str += k.toString() );
> V get(Object key)
- key값에 따른 value를 리턴.
- 현재 Map에 key가 없다면 null 리턴
> default V getOrDefault(Object key, V defaultValue)
- key값에 따른 value를 리턴
- 현재 Map에 해당 key가 없다면, defaultValue 리턴
> int hashCode()
- 각 객체의 값에 따른 주소와 관련있는 고유번호(HashCode)를 리턴
> boolean isEmpty()
- 현재 Map에 어떠한 key-value 쌍도 저장되어있지 않으면 true 반환
> Set<K> keySet()
- 현재 Map이 가지고 있는 key들을 Set 형태로 리턴
> default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
- value 값 설정 또는 교체
- key에 해당하는 value가 null인 경우
ㄴ 매개변수로 받은 value값이 해당 key의 value로 저장됨
- key에 해당하는 value가 이미 저장되어 있는 경우
ㄴ BiFunction에 따름
ㄴ BiFunction부분이 ( existV, initV ) -> existV + initV 라면?
ㄴ 해당 key의 value는 ( 이미 저장되어있던 value + 매개변수로 받은 value ) 연산 결과값이 저장됨.
ㄴ ( existV, initV ) -> initV + existV 요렇게 existV와 initV 순서를 바꾸면? 연산 순서 바뀜
- K, V의 타입은 Map을 생성했을 때 정해진 타입을 따른다.
- merge 메소드를 뜯어봐야...
ㄴ java.util.function.BiFunction<T, U, R>
ㄴ Represents a function that accepts two arguments and produces a result.
This is the two-arity specialization of Function.
ㄴ 2개의 인수만 입력하면 된다는 이야기
ㄴ This is a functional interfacewhose functional method is apply(Object, Object).
ㄴ 함수 메소드가 apply (Object, Object) 인 함수 인터페이스이다.
ㄴ Type Parameters
<T> the type of the first argument to the function
<U> the type of the second argument to the function
<R> the type of the result of the function
> V put( K key, V value )
- 매개변수로 받은 key-value 쌍을 현재 Map에 저장(추가)
> void putAll( Map<? extends K, ? extends V> m)
- 매개변수로 받은 Map m의 모든 Mapping을 현재 Map에 저장
- 현재 Map에 Map m의 key와 중복되는 key가 있다면 Map m의 value로 교체됨
> default V putIfAbsent( K key, V value )
- 현재 Map이 갖고있는 key의 value가 null이거나 없다면, 매개면수 value를 저장한다.
- 현재 Map의 key가 value를 갖고있다면, 해당 밸류를 반환한다.
> V remove( Object o )
- 매개변수로 받은 key를 현재 Map이 갖고있다면 해당 Mapping을 제거(key-value 쌍)
- 제거에 성공하면 제거된 Mapping의 value를 리턴
> default boolean remove( Onject Key, Object Value )
- 매개변수로 받은 key-value와 동일한 Mapping을 제거.
- key, value 둘 중 하나라도 다르면 false 반환
- 제거가 완료되면 true, 실패하면 false 반환
> default V replace( K key, V value )
- 매개변수 key와 일치하는 key를 가진 Mapping이 있는 경우
ㄴ 해당 Mapping의 value를 매개변수로 받은 value로 변경
ㄴ 기존 value값을 리턴
- 매개변수 key와 일치하는 key를 가진 Mapping이 없는 경우
ㄴ null 리턴
> default boolean replace( K key, V oldValue, V newValue )
- 매개변수 key와 현재 Map의 key가 같으면서, value값까지 같은 경우
ㄴ 해당 Mapping의 value를 매개변수로 받은 newValue로 변경
ㄴ true 리턴
- 둘 중 하나라도 다른 경우
ㄴ false 리턴
> default void replaceAll( Bifunction<? super K, ? super V, ? extends V> function )
- 주어진 function에 맞게 현재 Map의 value값을 변경
- 모든 entries를 처리했거나, function에서 예외가 발생할 때 까지 반복
> Collection<V> values()
- 현재 Map이 가지고 있는 모든 value를 Collection 인터페이스로 반환
Modifier and Type | Method | Description |
void | clear() | Removes all of the mappings from this map (optional operation). |
Map에 저장된 모든 Mapping을 삭제 | ||
default V | compute(K key, BiFunction<?
super K,? super V, ? extends V> remappingFunction) |
Attempts to compute a mapping for the specified key and its current mapped value (or null if there is no current mapping). |
default V | computeIfAbsent(K key, Function<? super K,? extendsV> mappingFunction) | If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the given mapping function and enters it into this map unless null. |
default V | computeIfPresent(K key, BiFunction<? super K,? super V,? extendsV> remappingFunction) | If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value. |
boolean | containsKey(Object key) | Returns true if this map contains a mapping for the specified key. |
저장된 Mapping의 key들 중 매개변수로 받은 key가 존재하는지 판단하여 true/false 리턴 | ||
boolean | containsValue(Object value) | Returns true if this map maps one or more keys to the specified value. |
저장된 Mapping의 value들 중 매개변수로 받은 value와 짝인 key값이 한개 이상이면 true 리턴 | ||
Set<Map.Entry<K,V>> | entrySet() | Returns a Set view of the mappings contained in this map. |
Map에 저장된 Mapping을 Set의 형태( key=valuse )로 반환 | ||
boolean | equals(Object o) | Compares the specified object with this map for equality. |
현재 Map과 o가 동일한지 판단 |
||
default void | forEach(BiConsumer<? super K,? super V> action) | Performs the given action for each entry in this map until all entries have been processed or the action throws an exception. |
현재 Map의 모든 쌍(entry)이 처리될 때 까지 반복하며 action을 수행 | ||
V | get(Object key) | Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key. |
key값에 따른 value를 리턴. 현재 Map에 key가 없다면 null 리턴 | ||
default V | getOrDefault(Object key, V defaultValue) | Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key. |
key값에 따른 value를 리턴 현재 Map에 해당 key가 없다면, defaultValue 리턴 |
||
int | hashCode() | Returns the hash code value for this map. |
각 객체의 값에 따른 주소와 관련있는 고유번호를 리턴 | ||
boolean | isEmpty() | Returns true if this map contains no key-value mappings. |
현재 Map에 어떠한 key-value 쌍도 저장되어있지 않으면 true 반환 | ||
Set<K> | keySet() | Returns a Set view of the keys contained in this map. |
현재 Map이 가지고 있는 key들을 Set 형태로 리턴 | ||
default V | merge(K key, V value, BiFunction<? super V,? super V,? extendsV> remappingFunction) | If the specified key is not already associated with a value or is associated with null, associates it with the given non-null value. |
만약 매개변수로 받은 key값에 해당하는 현재 Map에 저장되어 있는 key의 value가 없거나 null이라면 매개변수로 받은 null값이 아닌 value를 해당 key에 매핑 |
||
V | put(K key, V value) | Associates the specified value with the specified key in this map (optional operation). |
매개변수로 받은 key-value 쌍을 현재 Map에 저장(추가) |
||
void | putAll(Map<? extends K,? extends V> m) | Copies all of the mappings from the specified map to this map (optional operation). |
매개변수로 받은 Map m의 모든 Mapping을 현재 Map에 저장 현재 Map에 Map m의 key와 중복되는 key가 있다면 Map m의 value로 교체됨 |
||
default V | putIfAbsent(K key, V value) | If the specified key is not already associated with a value (or is mapped to null) associates it with the given value and returns null, else returns the current value. |
현재 Map이 갖고있는 key의 value가 null이거나 없다면, 매개면수 value를 저장하고, 현재 Map의 key가 value를 갖고있다면 해당 밸류를 반환한다. |
||
V | remove(Object key) | Removes the mapping for a key from this map if it is present (optional operation). |
매개변수로 받은 key를 현재 Map이 갖고있다면 해당 Mapping을 제거(key-value 쌍)하고 제거된 Mapping의 value를 리턴 |
||
default boolean | remove(Object key, Object value) | Removes the entry for the specified key only if it is currently mapped to the specified value. |
매개변수로 받은 key-value와 동일한 Mapping을 제거. key, value 둘 중 하나라도 다르면 false 제거가 완료되면 true, 실패하면 false 반환 |
||
default V | replace(K key, V value) | Replaces the entry for the specified key only if it is currently mapped to some value. |
매개변수 key와 일치하는 key를 가진 Mapping이 있는 경우 해당 Mapping의 value를 매개변수로 받은 value로 변경하고 기존 value값을 리턴 매개변수 key와 일치하는 key를 가진 Mapping이 없는 경우 null 리턴 |
||
default boolean | replace(K key, V oldValue, V newValue) | Replaces the entry for the specified key only if currently mapped to the specified value. |
매개변수 key, oldValue 쌍과 완전히 같은 Mapping이 있는 경우 oldValue를 newValue로 교체하고 true 반환, key-oldValue 하나라도 같은게 없으면 false 반환 |
||
default void | replaceAll(BiFunction<? super K,? super V,? extends V> function) | Replaces each entry's value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception. |
BiFunction 조건에 따라 현재 Map의 모든 Mapping을 수정 예) hshMap.replaceAll((k,v)->v+v); 모든 value의 값이 value+value로 바뀜 예외가 발생하면 중단 |
||
int | size() | Returns the number of key-value mappings in this map. |
현재 Map의 Mapping 갯수를 반환 |
||
Collection<V> | values() | Returns a Collection view of the values contained in this map. |
현재 맵이 가진 모든 value를 Collection 인터페이스 타입으로 반환 |
3. Set - Oracle - doc - Set
3-2. Methods in List - 실습코드 링크
3-3. Methods ( docs.oracle.com )
* Set이 뭐에요?
> Collection을 상속받은 인터페이스
> 요소의 저장 순서 없음( LinkedHashSet 제외 )
> 요소의 중복 허용 안함
** Set의 종류는요?
> HashSet<E>
- 데이터를 순서 없이 hash table에 저장. Set 중 가장 성능이 좋다.
> TreeSet<E>
- 데이터가 값에 따라 정렬되어 저장
> LinkedHashSet<E>
- 연결된 목록 타입으로 구현된 hash table에 데이터를 저장
- 순서가 있다
> 선언과 초기화
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class SetExam { //Set 선언과 초기화 Set<Integer> intSet; Set<Integer> intSet2; Set<String> strSet; public SetExam(){ this.intSet = new HashSet<Integer>(); this.intSet2 = new HashSet<Integer>(); //add 메소드를 사용해서 Set에 값 저장 intSet.add(1); intSet.add(2); intSet.add(3); //for문을 사용해서 배열의 값을 Set에 저장 int[] intArr1 = {4,5,6,7}; for(int i : intArr1) { intSet2.add(i); } //배열을 Set으로 변환 String[] strArr1 = {"A","B","C","D"}; this.strSet = new HashSet<String>(Arrays.asList(strArr1)); } } | cs |
> Set - Array 변환
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void setToArray() { //toString 메소드 사용 System.out.println("intSet.toString\t" + intSet.toString()); //toArray 메소드 사용 Integer[] intArr2 = intSet.toArray(new Integer[intSet.size()]); System.out.println("intSet.toArray\t" + Arrays.toString(intArr2)); String[] strArr2 = strSet.toArray(new String[strSet.size()]); System.out.println("strSet.toArray\t" + Arrays.toString(strArr2)); //stream 사용 Integer[] intArr3 = intSet.stream().toArray(Integer[] :: new); System.out.println(".stream().toArray\t"+Arrays.toString(intArr3)); //Array to Set intSet = new HashSet<Integer>(Arrays.asList(intArr3)); } | cs |
> Set에 저장된 데이터 활용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void handleElementsInSet() { System.out.println("intSet.toString() : \t" + intSet.toString()); //Iterator 활용 Iterator<Integer> iter = intSet.iterator(); while(iter.hasNext()) { System.out.print(iter.next() + " "); } //contains, remove 활용 if( intSet.contains(1) ) { System.out.println("\nintSet.remove(1) : \t"+intSet.remove(1)); } System.out.println("intSet.toString() : \t" + intSet.toString()); } | cs |
- e를 현재 Set에 추가하고 true를 반환한다. 저장하려는 e 값이 이미 Set에 존재하는 경우 false를 반환하고 동작하지 않는다.
> boolean addAll( Collection<? extends E> c )
- 현재 Set에 c의 요소들을 Set에 추가한다
- 저장된 요소들과 다른 요소가 하나라도 있다면 해당 값만 저장되고 true 반환
- c의 모든 요소가 이미 Set에 존재한다면 false를 반환
> void clear()
- Set에 저장된 모든 요소 삭제
> boolean contains( Object o )
- 현재 Set에 o가 저장되어 있다면 true 반환
> boolean containsAll( Collection<?> c )
- 현재 Set에 c의 모든 요소가 저장되어 있다면 true 반환
> boolean equals( Object o )
- 현재 Set과 o가 같다면 true 반환
> int hashCode()
- hashCode()메소드는 Object class에 포함되어 있는 메소드.
- 각 객체의 값에 따른 주소와 관련있는 고유번호를 리턴한다.
> boolean isEmpty()
- 현재 Set에 저장되어 있는 요소가 없다면 true 반환
> Iterator<E> iterator()
- 현재 Set의 iterator 반환
> boolean remove( Object o )
- 현재 Set에 o가 저장되어있다면 삭제하고 true 반환. o가 저장되어있지 않다면 false 반환
> boolean removeAll( Collection<?> c )
- 현재 Set에 c의 모든 요소 중 하나라도 저장되어 있다면 Set에서 해당 값을 삭제하고 true 반환
> boolean retainAll( Collection<?> c )
- 현재 Set에 c의 모든 요소 중 하나라도 저장되어 있다면 Set에서 해당 값을 제외한 모든 값을 삭제하고 true 반환
- 교집합이 없다면 현재 Set의 모든 요소를 삭제하고 true 반환
> int size()
- 현재 Set에 저장된 요소의 개수를 반환
> default Spliterator<E> spliterator()
- 현재 Set의 spliterator 반환
> Object[] toArray()
- 현재 Set을 배열로 변환해서 반환
> <T> T[] toArray( T[] a )
- 현재 Set의 모든 요소를 지정된 타입의 배열로 변환해서 반환
Modifier and Type |
Method |
Description |
boolean |
add(E e) |
Adds the specified element to this set if it is not already present (optional operation). |
e를 현재 Set에 추가하고 true를 반환한다. 저장하려는 e 값이 이미 Set에 존재하는 경우 false를 반환하고 동작하지 않는다. |
||
boolean |
addAll(Collection |
Adds all of the elements in the specified collection to this set if they're not already present (optional operation). |
현재 Set에 c의 요소들을 Set에 추가한다 저장된 요소들과 다른 요소가 하나라도 있다면 해당 값만 저장되고 true 반환 c의 모든 요소가 이미 Set에 존재한다면 false를 반환 |
||
void |
clear() |
Removes all of the elements from this set (optional operation). |
Set에 저장된 모든 요소 삭제 |
||
boolean |
contains(Object o) |
Returns true if this set contains the specified element. |
현재 Set에 o가 저장되어 있다면 true 반환 | ||
boolean |
containsAll(Collection<?> c) |
Returns true if this set contains all of the elements of the specified collection. |
현재 Set에 c의 모든 요소가 저장되어 있다면 true 반환 | ||
boolean |
equals(Object o) |
Compares the specified object with this set for equality. |
현재 Set과 o가 같다면 true 반환 | ||
int |
hashCode() |
Returns the hash code value for this set. |
각 객체의 값에 따른 주소와 관련있는 고유번호를 반환 |
||
boolean |
isEmpty() |
Returns true if this set contains no elements. |
현재 Set에 저장되어 있는 요소가 없다면 true 반환 | ||
Iterator<E> |
iterator() |
Returns an iterator over the elements in this set. |
현재 Set의 iterator 반환 | ||
boolean |
remove(Object o) |
Removes the specified element from this set if it is present (optional operation). |
현재 Set에 o가 저장되어있다면 삭제하고 true 반환. o가 저장되어있지 않다면 false 반환 |
||
boolean |
removeAll(Collection<?> c) |
Removes from this set all of its elements that are contained in the specified collection (optional operation). |
현재 Set에 c의 모든 요소 중 하나라도 저장되어 있다면 Set에서 해당 값을 삭제하고 true 반환 |
||
boolean |
retainAll(Collection<?> c) |
Retains only the elements in this set that are contained in the specified collection (optional operation). |
현재 Set에 c의 모든 요소 중 하나라도 저장되어 있다면 Set에서 해당 값을 제외한 모든 값을 삭제하고 true 반환 교집합이 없다면 현재 Set의 모든 요소를 삭제하고 true 반환 |
||
int |
size() |
Returns the number of elements in this set (its cardinality). |
현재 Set에 저장된 요소의 개수를 반환 | ||
default Spliterator<E> |
spliterator() |
Creates a Spliterator over the elements in this set. |
분할할 수 있는 반복자 생성. Iterator 보다 병렬 작업에 특화된 인터페이스 |
||
Object[] |
toArray() |
Returns an array containing all of the elements in this set. |
현재 Set의 모든 요소를 배열로 변환해서 반환 | ||
<T> T[] |
toArray(T[] a) |
Returns an array containing all of the elements in this set; the runtime type of the returned array is that of the specified array |
현재 Set의 모든 요소를 지정된 타입의 배열로 변환해서 반환 |
참고 문서 : 프로그래머스, 프로그래밍 강의, 자바 중급 ( https://programmers.co.kr/learn/courses/9 )
공부 흐름 : 메소드 확인 -> 임의 실습코드 작성 -> 결과값을 토대로 메소드 재확인
'공부 > Java' 카테고리의 다른 글
Java_10_Map.class ( 자바 클래스 복붙 ) (0) | 2019.05.23 |
---|---|
Java_9_List.class ( 자바 클래스 복붙 ) (0) | 2019.05.23 |
Java_7_컬렉션 프레임워크, java.util, Generic, Time (0) | 2019.05.21 |
Java_6_Object클래스, java.lang 패키지 (0) | 2019.05.21 |
Java_5_람다식(Lambda Expressions) (0) | 2019.05.17 |