/*
<자료구조>
◎ 자바에서 자료구조는 어떠한 데이터를 쉽게 가공/처리하기 위해 사용한다.
<Collection (java.util.Collection)>
◎ Collection (인터페이스, java.util.Collection) 자료구조는 순서가 있는 데이터 혹은 데이터의 집합에 대한 단일 구조를 가진다.
[List]
- List<T> (인터페이스, java.util.List) 자료구조는 순서가 있는 데이터를 다루기 위해 사용한다.
<메서드>
-> add(T t) : 매개변수인 t를 List 의 끝(마지막 자리)에 추가한다.
-> add(int i, T t) : 매개변수인 T 타입의 객체 t를 List 의 i 번째 인자가 될수 있도록 추가한다.
-> addAll(Collection<? extends T> c) : 매개변수 c가 가지는 모든 인자 중 첫번째 인자가 i번째
인자가 될수 있도록 모두 추가한다.
-> clear() : List 객체가 가지고 있는 모든 인자를 제거한다.
-> contains(Object o) : List 객체가 가지고 있는 인자 중 매개변수 o와 equals() 메서드 비교결과가 true 인 것을
가지고 있는가에 대한 여부(boolean)를 반환한다.
-> containsAll(Collection<? extends T> c) : 매개 변수인 c가 가진 모든 인자를 호출 대상이 되는 List 객체가
모두 가지고 있는지에 대한 여부(boolean)를 반환한다.
가지고 있는가에 대한 여부는 contains 와 동일하다.
-> get(int i) : i번째 인자를 반환한다.
-> indexOf(Object o) : List 객체가 가지고 있는 인자 중 매개변수 o와 equals() 비교 결과가 true 인 첫번째 인자의
순번( int )을 반환한다.
-> iterator() : List 객체가 가지고 있는 인자를 반복할 수 있는 반복자(Iterator<T>) 를 반환한다.
-> LastIndexOf(Object o) : List 객체가 가지고있는 인자 중 매개변수 o와 equals() 비교결과가 true 인 마지막 인자의
순번( int )을 반환한다.
-> remove(int i) : List 객체가 가지고 있는 인자 중 그 순번이 i인 인자를 제거한다. 후행하는 인자의 순번은 당겨진다.
-> removeAll(Collection<?> c) : List 객체가 가지고 있는 인자 중 c가 가진 인자와 equals() 비교 결과가 true 인
모든 인자를 제거한다.
-> set(int i,T t) : List 객체가 가지고 있는 인자 중 i번째 인자의 값을 매개변수인 t로 바꾼다. 바뀌어진 이전 T 타입의
객체를 반환한다.
-> size() : List 객체가 가지고 있는 인자의 개수를 반환한다.
-> toArray() : List 객체가 가지고 있는 인자들을 Object[] 타입으로 반환한다.
-> toArray(T[] ts) : List 객체가 가지고 있는 인자들을 T[] 타입의 객체에 대입하여 반환한다.
<하위타입>
-> ArrayList<T> (클래스, java.util.List) 자료구조는 일반 배열 구조와 같이 순번(인덱스)을 통해 데이터에
접근할 수 있어 인자에 접근하는 속도는 빠른 대신, 데이터를 추가하거나 삭제하는 속도가 느리다.
- 인덱스를 통한 데이터 접근의 시간 복잡도 : O(1)
- 데이터의 삽입 및 삭제에 대한 시간 복잡도 : O(n)
-> LinkedList<T> (클래스, java.util.List) 자료구조는 각 인자가 인접한 인자를 기억하고 있는 형식이어서 인자에
접근하는 속도는 느린대신, 데이터를 추가하거나 삭제하는 속도가 빠르다.
- 인덱스를 통한 데이터 접근의 시간 복잡도 : O(n)
- 데이터의 삽입 및 삭제에 대한 시간 복잡도 : O(1)
-> Vector<T> (클래스, java.util.Vector) 자료구조는 동기화된(Synchronized)ArrayList<T>와 같다.
-> Stack<T> (클래스, java.util.Stack) 자료구조는 주로 후입선출(선입후출)의
기능(push(), pop()) 을 사용하기 위해 사용한다.
[Set]
- Set (인터페이스, java.util.Set) 자료구조는 순서가 없는, 집합적인 데이터를 다루기 위해 사용한다.
[메서드]
- add(T t) : 매개변수인 t를 Set 의 인자로 추가한다.
- addAll(Collection<? extends T> c) : 매개변수 c가 가지는 모든 인자를 추가한다.
- clear() : 모든 인자를 제거한다.
- contains(Object o) : Set 객체가 가지고 있는 이낮중 매개변수 o 와 equals() 메서드 비교결과가 true 인 것을
가지고 있는가에 대한 여부(boolean)을 반환한다.
- containsAll(Collection<? extends T> c) : 매개 변수인 c가 가진 모든 인자를 호출 대상이 되는 Set 객체가 모두
가지고 있는지에 대한 여부(boolean)를 반환한다. 가지고 있는가에 대한 여부는 contains 와 동일하다
- isEmpty() : 인자가 없는가에 대한 여부(boolean)을 반환한다.
- iterator() : Set 객체가 가지고 있는 인자를 반복할수 있는 반복자(Iterator<T>) 를 반환한다.
- remove(T t) : Set 객체가 가지고 있는 인자 중 그 순번이 i인 인자를 제거한다. 후행하는 인자의 순번은 당겨진다.
- removeAll(Collection<?> c) : Set 객체가 가지고 있는 인자 중 c가 가진 인자와 equals() 비교 결과가 true 인
모든 인자를 제거한다.
- size() : Set 객체가 가지고 있는 인자의 개수를 반환한다.
- toArray() : Set 객체가 가지고 있는 인자들을 Object[] 타입으로 반환한다.
- toArray(T[] ts) : List 객체가 가지고 있는 인자들을 T[] 타입의 객체에 대입하여 반환한다.
[하위 타입]
- HashSet(클래스, java.util.HashSet) 자료구조는 순서가 없는, 집합적인 데이털르 다루기 위해 사용한다.
- SortedSet(인터페이스, java.util.SortedSet) 집합적인 데이터를 정렬하여 다루기 위해 사용한다.
<하위타입>
-> TreeSet ( 클래스, java.util.TreeSet) 집합적인 데이털르 정렬하여 다루기 위해 사용한다.
<Map (java.util.Map)>
◎ Map<K, V> (인터페이스, java.util.Map) 자료구조는 순서와 관계 없고, 키와 값 쌍(key-Value Pair)으로
이루어진 데이터를 다룰때 사용한다.
[객체 메서드]
- clear() : 가지고 있는 키와 값 쌍을 모두 제거한다.
- containsKey(Object o) : 가지고 있는 쌍 중에 키가 전달된 o 와 동일한 쌍이 있는가의 여부(boolean) 를 반환한다.
- containsValue(Object o) : 가지고 있는 쌍 중에 값이 전달된 o 와 동일한 쌍이 있는가의 여부(boolean)를 반환한다.
- get(Object o) : 가지고 있는 쌍 중에 키가 전달된 o 와 같은 쌍의 V 타입의 객체인 값을 반환한다.
- getOrDefault(Object o, V v) : 가지고 있는 쌍 중에 키가 전달된 o 와 같은 쌍이 있다면 그 값을, 없다면 전달 받은
v 를 반환한다.
- KeySet() : 가지고 있는 쌍들의 키만 모아 Set<K> 타입의 객체로 반환한다.
- put(K k, V v) : 키가 k이고 값이 v 인 키-값 쌍을 추가한다. 단, 이미 존재하는 쌍 중에 키가 k와 같은 쌍이 있다면
기존 쌍의 값을 새로운 값으로 대체하고 대체된 값을 반환한다.
- putAll(Map<? extends K, ? extends V> m) : Map 타입의 매개변수 m이 가지고 있는 모든 키-값 쌍을 호출 대상이 되는
Map 의 인자로 복사한다.
- putIfAbsent(K k,V V) : 키가 k 이고, 값이 v 인 키-값 쌍을 추가한다. 단, 키 k로 접근한 쌍이 없거나, 그 값이 null 인
경우에는 추가를 하고 null 을 반환하며, 이미 존재한다면 v 를 반환한다.
- remove(Object o) : 가지고 있는 키-값 쌍 중 키가 o와 equals() 에 대해 true 인 쌍을 제거한다.
- replace(K k,V v) : 가지고 있는 키-값 쌍 중 키가 k와 동일한 쌍에 대한 값을 v로 지정하고 대체된 V 타입의 객체를 반환한다.
만약, 키가 k와 동일한 쌍이 없다면 아무 것도 하지 않고 null 을 반환한다.
- size() : 가지고 있는 키-값 쌍의 개수(int)를 반환한다.
- values() : 가지고 있는 키-값 쌍의 값들을 가지는 Collection<V> 객체를 반환한다.
[하위 타입]
- HashMap (클래스, java.util.HashMap) 자료구조는 순서와 관계 없고, 키와 값 쌍(Key-Value-Pair)으로 이루어진 데이터를
다룰때 사용한다. 동기화를 보장하지 않는다.
- Hashtable(클래스, java.util.Hashtable) 자료구조는 순서와 관계 없고, 키와 값 쌍(Key-Value-Pair)으로 이루어진 데이터를
다룰때 사용한다. 동기화를 보장한다.
- SortedMap (클래스, java.util.SortedMap) 자료구조는 엄밀히 얘기하면 키-값 쌍에는 순서(인덱스)가 없지만 키의 해시값을
기준으로 정렬을 하기 때문에 키-값 쌍을 키 기준으로 정렬하기가 쉽다.
<하위 타입>
-> TreeMap(클래스, java.util.TreeMap) 자료구조는 SortedMap 인터페이스를 구현한 대표 클래스이다.
*/