컬λ μ νλ μμν¬(Collection Framework)
μλ°μμ 컬λ μ νλ μμν¬μ΄λ, λ€μμ λ°μ΄ν°λ₯Ό μ½κ³ ν¨κ³Όμ μΌλ‘ μ²λ¦¬ν μ μλ νμ€νλ λ°©λ²μ μ 곡νλ ν΄λμ€μ μ§ν©μ μλ―Ένλ€. λ€μ λ§ν΄ λ°μ΄ν°λ₯Ό μ μ₯νλ μλ£ κ΅¬μ‘°μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μκ³ λ¦¬μ¦μ ꡬ쑰ννμ¬ ν΄λμ€λ‘ ꡬνν΄ λμ κ²μ΄λ€.
JDK 1.2 μ΄μ κΉμ§λ Vector, Hashtable, Propertiesμ κ°μ 컬λ μ ν΄λμ€λ€μ μλ‘ κ°μ λ€λ₯Έ λ°©μμΌλ‘ μ²λ¦¬ν΄μΌ νμΌλ JDK 1.2λΆν° 컬λ μ νλ μμμ΄ λ±μ₯νλ©΄μ λ€μν μ’ λ₯μ 컬λ μ ν΄λμ€κ° μΆκ°λκ³ λͺ¨λ 컬λ μ ν΄λμ€λ₯Ό νμ€νλ λ°©μμΌλ‘ λ€λ£° μ μλλ‘ μ²΄κ³νλμλ€.
μ΄λ¬ν 컬λ μ νλ μμν¬μ μλ°μ μΈν°νμ΄μ€(interface)λ₯Ό μ¬μ©νμ¬ κ΅¬νλλ€.
컬λ μ νλ μμν¬μ ν΅μ¬ μΈν°νμ΄μ€
컬λ μ νλ μμν¬μμλ ν¬κ² 컬λ μ μ 3κ°μ§ νμ μΌλ‘ λλμ΄ ν΅μ¬μ΄ λλ μ£Όμ μΈν°νμ΄μ€λ₯Ό μ μνλ€.
1. List μΈν°νμ΄μ€
2. Set μΈν°νμ΄μ€
3. Map μΈν°νμ΄μ€
μ¬κΈ°μ Listμ Set μΈν°νμ΄μ€μ 곡ν΅μ μ λ½μλ΄μ΄ μλ‘μ΄ μΈν°νμ΄μ€μΈ Collectionμ μΆκ°λ‘ μ μνμλ€. Map μΈν°νμ΄μ€λ ꡬ쑰μμ μ°¨μ΄λ‘ μΈν΄ λ³λλ‘ μ μλλ€. νμ 컬λ μ νλ μμν¬μ μ€μΈ μμ€λ₯Ό λΆμν΄λ³΄λ©΄ κ°μ²΄μ§ν₯μ μΈ μ€κ³λ₯λ ₯μ ν₯μμν€λλ° λ§μ λμμ΄ λ κ²μ΄λ€.
μλ°μμ 컬λ μ νλ μμν¬λ₯Ό ꡬμ±νκ³ μλ μΈν°νμ΄μ€ κ°μ μμ κ΄κ³λ λ€μ κ·Έλ¦Όκ³Ό κ°λ€.
μ£Όμ μΈν°νμ΄μ€ κ°μ μμ κ΄κ³
μμ κ·Έλ¦Όμμ <E>λ <K, V>λ 컬λ μ νλ μμν¬λ₯Ό ꡬμ±νλ λͺ¨λ ν΄λμ€κ° μ λ€λ¦μΌλ‘ ννλμ΄ μλ€λ κ²μ μλ €μ€λ€.
μ£Όμ μΈν°νμ΄μ€μ κ°λ΅ν νΉμ§
μΈν°νμ΄μ€ |
μ€λͺ |
ꡬν ν΄λμ€ |
List<E> |
μμκ° μλ λ°μ΄ν°μ μ§ν©μΌλ‘, λ°μ΄ν°μ μ€λ³΅μ νμ©νλ€. |
Vector, ArrayList, LinkedList, Stack, Queue λ± |
Set<E> |
μμκ° μλ λ°μ΄ν°μ μ§ν©μΌλ‘, λ°μ΄ν°μ μ€λ³΅μ νμ©νμ§ μλλ€. μ) μμ μ μμ§ν©, μμμ μ§ν© |
HashSet, TreeSet λ± |
Map<K, V> |
ν€(Key)μ κ°(Value)μ ν μμΌλ‘ μ΄λ£¨μ΄μ§ λ°μ΄ν°μ μ§ν©μΌλ‘ μμκ° μλ€. |
HashMap, TreeMap, Hashtable, Properties |
컬λ μ νλ μμν¬μ μνλ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ₯Ό 컬λ μ ν΄λμ€(Collection Class)λΌκ³ νλ€. (μ¦ μμ List, Set, Map 3κ°μ§ μ€μ νλλ₯Ό ꡬννκ³ μμ.) ꡬνν μΈν°νμ΄μ€μ μ΄λ¦μ΄ ν΄λμ€μ μ΄λ¦μ ν¬ν¨λμ΄ μμ΄μ μ΄λ¦λ§μΌλ‘λ ν΄λμ€μ νΉμ§μ μ½κ² μ μ μλλ‘ λμ΄μλ€.
(Vector, Stack, Hashtable, Propertiesμ κ°μ ν΄λμ€λ€μ 컬λ μ νλ μμν¬κ° λ§λ€μ΄μ§κΈ° μ μ μ‘΄μ¬νλ κ²μ΄κΈ° λλ¬Έμ 컬λ μ νλ μμν¬μ λͺ λͺ λ²μ λ°λ₯΄μ§ μμ, Vectorλ Hashtableκ³Ό κ°μ κΈ°μ‘΄μ 컬λ μ ν΄λμ€λ€μ νΈνμ μν΄μ λ¨κ²¨λμμ§λ§ κ°λ₯νλ©΄ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€. κ·Έ λμ μλ‘ μΆκ°λ ArrayListμ HashMapμ μ¬μ©νμ)
κ°λ¨ν μμ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.*; public class Collection01 { public static void main(String[] args) { // 리μ€νΈ μμ± ArrayList<String> arrList = new ArrayList<String>(); // 리μ€νΈμ μμμ μ μ₯ arrList.add("λ·"); arrList.add("λ"); arrList.add("μ
"); arrList.add("νλ"); // 리μ€νΈ μμμ μΆλ ₯ for(int i = 0; i < arrList.size(); i++) { System.out.println(arrList.get(i)); } } } | cs |
[μ€ν κ²°κ³Ό]
λ·
λ
μ
νλ
Collection μΈν°νμ΄μ€
Listμ Setμ μ‘°μμΈ Collection μΈν°νμ΄μ€μμ μ 곡νλ μ£Όμ λ©μλλ λ€μκ³Ό κ°λ€.
λ©μλ |
μ€λͺ |
boolean add(Object o) boolean addAll(Collection c) |
ν΄λΉ 컬λ μ μ μ λ¬λ μμλ₯Ό μΆκ°ν¨ |
void clear() |
ν΄λΉ 컬λ μ μ λͺ¨λ μμλ₯Ό μ κ±°ν¨ |
boolean contains(Object o) boolean containsAll(Collection c) |
μ§μ λ κ°μ²΄(o) λλ 컬λ μ μ κ°μ²΄λ€μ΄ 컬λ μ μ ν¬ν¨λμ΄ μλμ§ νμΈν¨ |
boolean equals(Object o) |
λμΌν 컬λ μ μΈμ§ λΉκ΅ν¨ |
boolean isEmpty() |
컬λ μ μ΄ λΉμ΄μλμ§ νμΈν¨ |
Iterator<E> iterator() |
ν΄λΉ 컬λ μ μ λ°λ³΅μ(iterator)λ₯Ό λ°νν¨ |
boolean remove(Object o) |
μ§μ λ κ°μ²΄λ₯Ό μμ ν¨ |
int size() |
ν΄λΉ 컬λ μ
μ μμμ μ΄ κ°μλ₯Ό λ°νν¨ |
Object[] toArray() |
ν΄λΉ 컬λ μ μ λͺ¨λ μμλ₯Ό Object νμ μ λ°°μ΄λ‘ λ°νν¨ |
(JDK 1.8λΆν° μΆκ°λ parallelStream, removeIf, stream, forEach λ±μ λ€μ λλ€μ μ€νΈλ¦Όμμ μ€λͺ )
JAVA API λ§ν¬
Β· Collection
List μΈν°νμ΄μ€
List μΈν°νμ΄μ€λ μ€λ³΅μ νμ©νλ©΄μ μ μ₯μμκ° μ μ§λλ 컬λ μ μ ꡬννλλ° μ¬μ©λλ€. λνμ μΈ List 컬λ μ ν΄λμ€μ μνλ ν΄λμ€λ λ€μκ³Ό κ°λ€.
1. ArrayList<E>
2. LinkedList<E>
3. Vector<E>
4. Stack<E>
ArrayList<E> ν΄λμ€
ArrayListν΄λμ€λ κ°μ₯ λ§μ΄ μ¬μ©λλ 컬λ μ ν΄λμ€ μ€ νλμ΄λ€. JDK 1.2λΆν° μ 곡λμκ³ λ΄λΆμ μΌλ‘ Object λ°°μ΄μ μ΄μ©νμ¬ μμλ₯Ό μ μ₯νλ€. μΈλ±μ€ 0λ²μ§ΈλΆν° μ°¨λ λλ‘ μ±μλκ°λ©° κ½ μ°¬ κ²½μ°μλ λ³΄λ€ ν° μλ‘μ΄ λ°°μ΄μ μμ±ν΄μ κΈ°μ‘΄μ λ°°μ΄μ μ μ₯λ λ΄μ©μ μλ‘μ΄ λ°°μ΄λ‘ 볡μ¬ν λ€μμ μ μ₯λλ€. μ΄ κ³Όμ μ μλμΌλ‘ μνλμ§λ§, μμμ μΆκ° λ° μμ μμ μ΄ κ±Έλ¦°λ μκ°μ΄ λ§€μ° κΈΈμ΄μ§λ λ¨μ μ κ°μ§κ² λλ€. λ¨λ°©ν₯ ν¬μΈν° κ΅¬μ‘°λ‘ μλ£μ λν μμ°¨μ μΈ μ κ·Όμ κ°μ μ΄ μλ€. (λ¨λ°©ν₯ ν¬μΈν°μ΄κΈ° λλ¬Έμ Iteratorλ₯Ό μ¬μ©νλ©΄ μ’μ κ² κ°μ)
ArrayList μμ
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 32 33 34 35 36 37 38 39 40 | ArrayList<Integer> arrList = new ArrayList<Integer>(); // add() λ©μλλ₯Ό μ΄μ©ν μμμ μ μ₯ arrList.add(40); arrList.add(20); arrList.add(30); arrList.add(10); // for λ¬Έκ³Ό get() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ for (int i = 0; i < arrList.size(); i++) { System.out.print(arrList.get(i) + " "); } // remove() λ©μλλ₯Ό μ΄μ©ν μμμ μ κ±° arrList.remove(1); // Enhanced for λ¬Έκ³Ό get() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ for (int e : arrList) { System.out.print(e + " "); } // Collections.sort() λ©μλλ₯Ό μ΄μ©ν μμμ μ λ ¬ Collections.sort(arrList); // iterator() λ©μλμ get() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ Iterator<Integer> iter = arrList.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); } // set() λ©μλλ₯Ό μ΄μ©ν μμμ λ³κ²½ arrList.set(0, 20); for (int e : arrList) { System.out.print(e + " "); } // size() λ©μλλ₯Ό μ΄μ©ν μμμ μ΄ κ°μ System.out.println("리μ€νΈμ ν¬κΈ° : " + arrList.size()); | cs |
μ€νκ²°κ³Ό
40 20 30 10
40 30 10
10 30 40
20 30 40
리μ€νΈμ ν¬κΈ° : 3
μ μμ μ²λΌ 컬λ μ ν΄λμ€μ μμλ₯Ό μΆλ ₯νλ λ°©λ²μλ for λ¬Έκ³Ό enhanced for λ¬Έ, iterator() λ©μλλ₯Ό μ΄μ©ν λ°©λ² λ± λ€μν λ°©λ²μ μ¬μ©ν μ μλ€.
JAVA API λ§ν¬
Β· ArrayList
LinkedList<E> ν΄λμ€
LinkedList ν΄λμ€λ ArrayList ν΄λμ€κ° λ°°μ΄μ μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯ν¨μΌλ‘μ¨ λ°μνλ λ¨μ μ 극볡νκΈ° μν΄ νμνλ€. JDK 1.2λΆν° μ 곡λ LinkedList ν΄λμ€λ λ΄λΆμ μΌλ‘ μ°κ²° 리μ€νΈ (linked list)λ₯Ό μ΄μ©νμ¬ μμλ₯Ό μ μ₯νλ€. λ°°μ΄μ μμ°¨μ μΌλ‘ μ μ₯λμ§λ§ μ°κ²° 리μ€νΈλ μ μ₯λ μμκ° λΉμμ°¨μ μΌλ‘ λΆν¬λλ©°, μ΄λ¬ν μμλ€ μ¬μ΄λ₯Ό λ§ν¬(link)λ‘ μ°κ²°νμ¬ κ΅¬μ±νλ€.
μ°κ²° 리μ€νΈμλ λ¨μΌ μ°κ²° 리μ€νΈ(singly linked list)μ μ΄μ€ μ°κ²° 리μ€νΈ(doubly linked list)κ° μλ€.
λ¨μΌ μ°κ²° 리μ€νΈ
λ¨μΌ μ°κ²° 리μ€νΈλ μ μ₯κ³Ό μμ μμ μ΄ λ€μ μμλ₯Ό κ°λ¦¬ν€λ μ°Έμ‘°λ§ λ³κ²½νλ©΄ λλ―λ‘, μμ£Ό λΉ λ₯΄λ€. νμ§λ§ μ΄μ μμλ‘ μ κ·ΌνκΈ°κ° λ§€μ° μ΄λ ΅κΈ° λλ¬Έμ μ΄λ₯Ό κ°μ ν κ²μ΄ λ°λ‘ μ΄μ€ μ°κ²° 리μ€νΈ(doubly linked list)μ΄λ€.
μ΄μ€ μ°κ²° 리μ€νΈ
LinkedList ν΄λμ€λ μ΄μ€ μ°κ²° 리μ€νΈλ₯Ό λ΄λΆμ μΌλ‘ ꡬνν κ²μ΄λ€. λν, LinkedList ν΄λμ€ μμ List μΈν°νμ΄μ€λ₯Ό ꡬννλ―λ‘, ArrayList ν΄λμ€μ μ¬μ©ν μ μλ λ©μλκ° κ±°μ κ°λ€. ArrayListμ LinkedListμ μ°¨μ΄λ μ¬μ© λ°©λ²μ΄ μλ, λ΄λΆμ μΌλ‘ μμλ₯Ό μ μ₯νλ λ°©λ²μ μλ€.
Vector<E> ν΄λμ€
Vector ν΄λμ€λ JDK.1.0λΆν° μ¬μ©ν΄μ¨ ArrayListμ κ°μ λμμ μννλ ν΄λμ€μ΄λ€. νμ§λ§ νμ¬μλ κΈ°μ‘΄ μ½λμμ νΈνμ±μ μν΄μλ§ λ¨μμμΌλ―λ‘, Vector ν΄λμ€λ³΄λ€λ ArrayList ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
JAVA API λ§ν¬
Β· Vector
Stackκ³Ό Queue
Stack<E> ν΄λμ€λ List 컬λ μ ν΄λμ€μ Vector ν΄λμ€λ₯Ό μμλ°μ, μ νμ μΈ μ€ν λ©λͺ¨λ¦¬ ꡬ쑰μ ν΄λμ€λ₯Ό μ 곡νλ€. μ€ν λ©λͺ¨λ¦¬ ꡬ쑰λ μ ν λ©λͺ¨λ¦¬ 곡κ°μ λ°μ΄ν°λ₯Ό μ μ₯νλ©΄μ νμ μ μΆ(LIFO)μ μ리λ₯Ό λ°λ₯΄λ μλ£κ΅¬μ‘°λ€. (λμ€μ μ μ₯[push]λ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ μΈμΆ[pop]λλ ꡬ쑰)
Stack ν΄λμ€ κ΅¬μ‘°
Stack ν΄λμ€λ μ€ν λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό νννκΈ° μν΄, Vector ν΄λμ€μ λ©μλλ₯Ό 5κ°λ§ μμλ°μ μ¬μ©νλ€.
λ©μλ |
μ€λͺ |
boolean empty() |
ν΄λΉ μ€νμ΄ λΉμ΄ μμΌλ©΄ trueλ₯Ό, λΉμ΄ μμ§ μμΌλ©΄ falseλ₯Ό λ°νν¨. |
E peek() |
ν΄λΉ μ€νμ μ μΌ μλ¨μ μλ(μ μΌ λ§μ§λ§μΌλ‘ μ μ₯λ) μμλ₯Ό λ°νν¨. |
E pop() |
ν΄λΉ μ€νμ μ μΌ μλ¨μ μλ(μ μΌ λ§μ§λ§μΌλ‘ μ μ₯λ) μμλ₯Ό λ°ννκ³ , ν΄λΉ μμλ₯Ό μ€νμμ μ κ±°ν¨. |
E push(E item) |
ν΄λΉ μ€νμ μ μΌ μλ¨μ μ λ¬λ μμλ₯Ό μ½μ ν¨. |
int search(Object o) |
ν΄λΉ μ€νμμ μ λ¬λ κ°μ²΄κ° μ‘΄μ¬νλ μμΉμ μΈλ±μ€λ₯Ό λ°νν¨. μ΄λ μΈλ±μ€λ μ μΌ μλ¨μ μλ(μ μΌ λ§μ§λ§μΌλ‘ μ μ₯λ) μμμ μμΉλΆν° 0μ΄ μλ 1λΆν° μμν¨. |
(λμ± λ³΅μ‘νκ³ λΉ λ₯Έ μ€νμ ꡬννκ³ μΆλ€λ©΄ Deque μΈν°νμ΄μ€λ₯Ό ꡬνν ArrayDeque ν΄λμ€λ₯Ό μ¬μ©νλ©΄ λλ€.)
Stack μμ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Stack<Integer> st = new Stack<Integer>(); // μ€νμ μμ± //Deque<Integer> st = new ArrayDeque<Integer>(); // search λ©μλλ₯Ό μ§μνμ§ μμ. // push() λ©μλλ₯Ό μ΄μ©ν μμμ μ μ₯ st.push(4); st.push(2); st.push(3); st.push(1); // peek() λ©μλλ₯Ό μ΄μ©ν μμμ λ°ν System.out.println(st.peek()); System.out.println(st); // pop() λ©μλλ₯Ό μ΄μ©ν μμμ λ°ν λ° μ κ±° System.out.println(st.pop()); System.out.println(st); // search() λ©μλλ₯Ό μ΄μ©ν μμμ μμΉ κ²μ System.out.println(st.search(4)); System.out.println(st.search(3)); | cs |
μ€ν κ²°κ³Ό
1
[4, 2, 3, 1]
1
[4, 2, 3]
3
1
JAVA API λ§ν¬
Β· Stack
Queue<E> μΈν°νμ΄μ€
ν΄λμ€λ‘ ꡬνλ μ€νκ³Όλ λ¬λ¦¬ μλ°μμ ν λ©λͺ¨λ¦¬ ꡬ쑰λ λ³λμ μΈν°νμ΄μ€ ννλ‘ μ 곡λλ€. μ΄λ¬ν Queue μΈν°νμ΄μ€λ₯Ό μμλ°λ νμ μΈν°νμ΄μ€λ λ€μκ³Ό κ°λ€.
1. Deque<E>
2. BlockingDeque<E>
3. BlockingQueue<E>
4. TransferQueue<E>
Queue μΈν°νμ΄μ€λ₯Ό μ§κ°μ μ μΌλ‘ ꡬνν ν΄λμ€λ μλΉν λ§λ€. κ·Έμμ€μμλ DequeμΈν°νμ΄μ€λ₯Ό ꡬνν LinkedListν΄λμ€κ° ν λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό ꡬννλ λ° κ°μ₯ λ§μ΄ μ¬μ©λλ€.
Queue μΈν°νμ΄μ€λ ν λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό νννκΈ° μν΄, λ€μκ³Ό κ°μ Collection μΈν°νμ΄μ€ λ©μλλ§μ μμλ°μ μ¬μ©νλ€.
λ©μλ |
μ€λͺ |
boolean add |
ν΄λΉ νμ 맨 λ€μ μ λ¬λ μμλ₯Ό μ½μ ν¨. λ§μ½ μ½μ μ μ±κ³΅νλ©΄ trueλ₯Ό λ°ννκ³ , νμ μ¬μ 곡κ°μ΄ μμ΄ μ½μ μ μ€ν¨νλ©΄ IllegalStateExceptionμ λ°μμν΄. |
E element() |
ν΄λΉ νμ 맨 μμ μλ(μ μΌ λ¨Όμ μ μ₯λ) μμλ₯Ό λ°νν¨. |
boolean offer(E e) |
ν΄λΉ νμ 맨 λ€μ μ λ¬λ μμλ₯Ό μ½μ ν¨. |
E peek() |
ν΄λΉ νμ 맨 μμ μλ(μ μΌ λ¨Όμ μ μ₯λ) μμλ₯Ό λ°νν¨. λ§μ½ νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν¨. |
E poll() |
ν΄λΉ νμ 맨 μμ μλ(μ μΌ λ¨Όμ μ μ₯λ) μμλ₯Ό λ°ννκ³ , ν΄λΉ μμλ₯Ό νμμ μ κ±°ν¨. λ§μ½ νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν¨. |
E remove() |
ν΄λΉ νμ 맨 μμ μλ(μ μΌ λ¨Όμ μ μ₯λ) μμλ₯Ό μ κ±°ν¨. |
(Java SE 6λΆν° μ§μλλ ArrayDeque ν΄λμ€λ μ€νκ³Ό ν λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό λͺ¨λ ꡬννλλ° κ°μ₯ μ ν©ν ν΄λμ€λ€.)
(μ€νκ³Ό νλ₯Ό μ¬μ©νμ¬ undo / redo κ°μ κΈ°λ₯μ λ§λ€ μ μλ€.)
JAVA API λ§ν¬
Β· Queue
Set μΈν°νμ΄μ€
Set μΈν°νμ΄μ€λ₯Ό ꡬνν Set 컬λ μ ν΄λμ€λ μμμ μ μ₯ μμλ₯Ό μ μ§νμ§ μκ³ , κ°μ μμμ μ€λ³΅μ μ₯μ νμ©νμ§ μλλ€. λνμ μΌλ‘λ HashSet<E>κ³Ό TreeSet<E>μ΄ μλ€.
Set μΈν°νμ΄μ€λ Collection μΈν°νμ΄μ€λ₯Ό μμλ°μΌλ―λ‘, Collection μΈν°νμ΄μ€μμ μ μν λ©μλλ λͺ¨λ μ¬μ©ν μ μλ€.
Set μΈν°νμ΄μ€μμ μ 곡νλ μ£Όμ λ©μλλ λ€μκ³Ό κ°λ€.
λ©μλ |
μ€λͺ |
boolean add(E e) |
ν΄λΉ μ§ν©(set)μ μ λ¬λ μμλ₯Ό μΆκ°ν¨. |
void clear() |
ν΄λΉ μ§ν©μ λͺ¨λ μμλ₯Ό μ κ±°ν¨. |
boolean contains(Object o) |
ν΄λΉ μ§ν©μ΄ μ λ¬λ κ°μ²΄λ₯Ό ν¬ν¨νκ³ μλμ§λ₯Ό νμΈν¨. |
boolean equals(Object o) |
ν΄λΉ μ§ν©κ³Ό μ λ¬λ κ°μ²΄κ° κ°μμ§λ₯Ό νμΈν¨. |
boolean isEmpty() |
ν΄λΉ μ§ν©μ΄ λΉμ΄μλμ§λ₯Ό νμΈν¨. |
Iterator<E> iterator() |
ν΄λΉ μ§ν©μ λ°λ³΅μ(iterator)λ₯Ό λ°νν¨. |
boolean remove(Object o) |
ν΄λΉ μ§ν©μμ μ λ¬λ κ°μ²΄λ₯Ό μ κ±°ν¨. |
int size() |
ν΄λΉ μ§ν©μ μμμ μ΄ κ°μλ₯Ό λ°νν¨. |
Object[] toArray() |
ν΄λΉ μ§ν©μ λͺ¨λ μμλ₯Ό Object νμ μ λ°°μ΄λ‘ λ°νν¨. |
HashSet<E> ν΄λμ€
HashSet ν΄λμ€λ Set 컬λ μ ν΄λμ€μμ κ°μ₯ λ§μ΄ μ¬μ©λλ ν΄λμ€ μ€ νλ. JDK 1.2λΆν° μ 곡λ HashSet ν΄λμ€λ ν΄μ μκ³ λ¦¬μ¦(hash algorithm)μ μ¬μ©νμ¬ κ²μ μλκ° λ§€μ° λΉ λ₯΄λ€. μ΄λ¬ν HashSet ν΄λμ€λ λ΄λΆμ μΌλ‘ HashMap μΈμ€ν΄μ€λ₯Ό μ΄μ©νμ¬ μμλ₯Ό μ μ₯νλ€. HashSet ν΄λμ€λ Set μΈν°νμ΄μ€λ₯Ό ꡬννλ―λ‘, μμλ₯Ό μμμ μκ΄μμ΄ μ μ₯νκ³ μ€λ³΅λ κ°μ μ μ₯νμ§ μμ΅λλ€. λ§μ½ μμμ μ μ₯ μμλ₯Ό μ μ§ν΄μΌ νλ€λ©΄ JDK 1.4λΆν° μ 곡νλ LinkedHashSet ν΄λμ€λ₯Ό μ¬μ©νλ©΄ λ©λλ€.
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 | HashSet<String> hs01 = new HashSet<String>(); HashSet<String> hs02 = new HashSet<String>(); // add() λ©μλλ₯Ό μ΄μ©ν μμμ μ μ₯ hs01.add("νκΈΈλ"); hs01.add("μ΄μμ "); System.out.println(hs01.add("μκΊ½μ ")); System.out.println(hs01.add("μκΊ½μ ")); // μ€λ³΅λ μμμ μ μ₯ // Enhanced for λ¬Έκ³Ό get() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ for (String e : hs01) { System.out.print(e + " "); } // add() λ©μλλ₯Ό μ΄μ©ν μμμ μ μ₯ hs02.add("μκΊ½μ "); hs02.add("νκΈΈλ"); hs02.add("μ΄μμ "); // iterator() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ Iterator<String> iter02 = hs02.iterator(); while (iter02.hasNext()) { System.out.print(iter02.next() + " "); } // size() λ©μλλ₯Ό μ΄μ©ν μμμ μ΄ κ°μ System.out.println("μ§ν©μ ν¬κΈ° : " + hs02.size()); | cs |
μ€νκ²°κ³Ό
true
false
νκΈΈλ μ΄μμ μκΊ½μ
νκΈΈλ μ΄μμ μκΊ½μ
μ§ν©μ ν¬κΈ° : 3
μμ μμ μμ μμμ μ μ₯ μμλ₯Ό λ°κΏλ μ μ₯λλ μμμλ μν₯μ λ―ΈμΉμ§ μλ κ²μ νμΈν μ μλ€.
λν, add() λ©μλλ₯Ό μ¬μ©νμ¬ ν΄λΉ HashSetμ μ΄λ―Έ μ‘΄μ¬νλ μμλ₯Ό μΆκ°νλ €κ³ νλ©΄, ν΄λΉ μμλ₯Ό μ μ₯νμ§ μκ³ falseλ₯Ό λ°ννλ κ²μ λ³Ό μ μλ€.
μ΄λ ν΄λΉ HashSetμ μ΄λ―Έ μ‘΄μ¬νλ μμμΈμ§λ₯Ό νμ νκΈ° μν΄μλ λ΄λΆμ μΌλ‘ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉκ² λλ€.
1. ν΄λΉ μμμμ hashCode() λ©μλλ₯Ό νΈμΆνμ¬ λ°νλ ν΄μκ°μΌλ‘ κ²μν λ²μλ₯Ό κ²°μ νλ€.
2. ν΄λΉ λ²μ λ΄μ μμλ€μ equals() λ©μλλ‘ λΉκ΅νλ€.
λ°λΌμ HashSetμμ add() λ©μλλ₯Ό μ¬μ©νμ¬ μ€λ³΅ μμ΄ μλ‘μ΄ μμλ₯Ό μΆκ°νκΈ° μν΄μλ hashCode()μ equals() λ©μλλ₯Ό μν©μ λ§κ² μ€λ²λΌμ΄λ©ν΄μΌ νλ€.
μλ° API λ§ν¬
Β· HashSet
TreeSet<E> ν΄λμ€
TreeSetν΄λμ€λ λ°μ΄ν°κ° μ λ ¬λ μνλ‘ μ μ₯λλ μ΄μ§ κ²μ νΈλ¦¬(binary search tree)μ ννλ‘ μμλ₯Ό μ μ₯νλ€. μ΄μ§ κ²μ νΈλ¦¬λ λ°μ΄ν°λ₯Ό μΆκ°νκ±°λ μ κ±°νλ λ±μ κΈ°λ³Έ λμ μκ°μ΄ λ§€μ° λΉ λ₯΄λ€. JDK 1.2λΆν° μ 곡λλ TreeSet ν΄λμ€λ NavigableSet μΈν°νμ΄μ€λ₯Ό κΈ°μ‘΄μ μ΄μ§ κ²μ νΈλ¦¬μ μ±λ₯μ ν₯μμν¨ λ λ-λΈλ νΈλ¦¬(Red-Black tree)λ‘ κ΅¬νν©λλ€. TreeSet ν΄λμ€λ Set μΈν°νμ΄μ€λ₯Ό ꡬννλ―λ‘, μμλ₯Ό μμμ μκ΄μμ΄ μ μ₯νκ³ μ€λ³΅λ κ°μ μ μ₯νμ§ μλλ€.
TreeSet
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 | TreeSet<Integer> ts = new TreeSet<Integer>(); // add() λ©μλλ₯Ό μ΄μ©ν μμμ μ μ₯ ts.add(30); ts.add(40); ts.add(20); ts.add(10); // Enhanced for λ¬Έκ³Ό get() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ for (int e : ts) { System.out.print(e + " "); } // remove() λ©μλλ₯Ό μ΄μ©ν μμμ μ κ±° ts.remove(40); // iterator() λ©μλλ₯Ό μ΄μ©ν μμμ μΆλ ₯ Iterator<Integer> iter = ts.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); } // size() λ©μλλ₯Ό μ΄μ©ν μμμ μ΄ κ°μ System.out.println("μ΄μ§ κ²μ νΈλ¦¬μ ν¬κΈ° : " + ts.size()); // subSet() λ©μλλ₯Ό μ΄μ©ν λΆλΆ μ§ν©μ μΆλ ₯ β System.out.println(ts.subSet(10, 20)); β‘ System.out.println(ts.subSet(10, true, 20, true)); | cs |
μ€ν κ²°κ³Ό
10 20 30 40
10 20 30
μ΄μ§ κ²μ νΈλ¦¬μ ν¬κΈ° : 3
[10]
[10, 20]
μμ μμ μ²λΌ TreeSet μΈμ€ν΄μ€μ μ μ₯λλ μμλ€μ λͺ¨λ μ λ ¬λ μνλ‘ μ μ₯λλ€.
λν, μμ μμ μμ μ¬μ©λ subSet() λ©μλλ TreeSet μΈμ€ν΄μ€μ μ μ₯λλ μμκ° λͺ¨λ μ λ ¬λ μνμ΄κΈ°μ λμμ΄ κ°λ₯ν ν΄λΉ νΈλ¦¬μ λΆλΆ μ§ν©λ§μ 보μ¬μ£Όλ λ©μλμ λλ€.
1 2 3 | 1. public NavigableSet<E> subSet(E fromElement, E toElement) 2. public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | cs |
β λ² λΌμΈμμ μ¬μ©λ subSet() λ©μλλ 첫 λ²μ§Έ 맀κ°λ³μλ‘ μ λ¬λ κ°μ ν΄λΉνλ μμλΆν° μμνμ¬ λ λ²μ§Έ 맀κ°λ³μλ‘ μ λ¬λ κ°μ ν΄λΉνλ μμμ λ°λ‘ μ§μ μμκΉμ§λ₯Ό λ°ν.
β‘λ² λΌμΈμμ μ¬μ©λ subSet() λ©μλλ λ λ²μ§Έμ λ€ λ²μ§Έ 맀κ°λ³μλ‘ κ°κ° 첫 λ²μ§Έμ μΈ λ²μ§Έ 맀κ°λ³μλ‘ μ λ¬λ κ°μ ν΄λΉνλ μμλ₯Ό ν¬ν¨ν κ²μΈμ§ μλμ§λ₯Ό λͺ μν μ μλ€.
μ¦, β‘λ² λΌμΈμμ λ€ λ²μ§Έ 맀κ°λ³μλ₯Ό falseλ‘ λ³κ²½νλ©΄ 20μ ν¬ν¨νμ§ μκ² λλ―λ‘, β λ² λΌμΈκ³Ό κ°μ κ²°κ³Όλ₯Ό μΆλ ₯ν κ²μ΄λ€.
JAVA API λ§ν¬
Β· TreeSet
컬λ μ ν΄λμ€ μ 리 & μμ½
κ° μ»¬λ μ ν΄λμ€λ§λ€ μ₯λ¨μ μ΄ μμΌλ―λ‘ κ΅¬νμ리μ νΉμ§μ μ μ΄ν΄ν΄μ μν©μ κ°μ₯ μ ν©ν κ²μ μ ννμ¬ μ¬μ©νλκ²μ΄ λ°λμ§νλ€.
컬λ μ |
νΉμ§ |
ArrayList |
λ°°μ΄ κΈ°λ°, λ°μ΄ν°μ μΆκ°μ μμ μ λΆλ¦¬, μμ°¨μ μΈ μΆκ°μμ λ μ μΌ λΉ λ¦. μμμ μμμ λν μ κ·Όμ±μ΄ λ°μ΄λ¨. |
LinkedList |
μ°κ²°κΈ°λ°, λ°μ΄ν°μ μΆκ°μ μμ μ μ 리, μμμ΄ μμμ λν μ κ·Όμ±μ΄ μ’μ§ μλ€. |
HashMap |
λ°°μ΄κ³Ό μ°κ²°μ΄ κ²°ν©λ νν, μΆκ°, μμ , κ²μ, μ κ·Όμ±μ΄ λͺ¨λ λ°μ΄λ¨. κ²μμλ μ΅κ³ . |
TreeMap |
μ°κ²°κΈ°λ°, μ λ ¬κ³Ό κ²μ(νΉν λ²μκ²μ)μ μ ν©. κ²μ μ±λ₯μ HashMapλ³΄λ€ λ¨μ΄μ§ |
Stack |
Vectorλ₯Ό μμλ°μ ꡬν |
Queue |
LinkedListκ° QueueμΈν°νμ΄μ€λ₯Ό ꡬν |
Properties |
Hashtableμ μμλ°μ ꡬν |
HashSet |
HashMapμ μ΄μ©ν΄μ ꡬν |
TreeSet |
TreeMapμ μ΄μ©ν΄μ ꡬν |
LinkedHashMap |
HashMapκ³Ό HashSetμ μ μ₯μμμ μ§κΈ°λ₯μ μΆκ°νμμ. |
μ°Έμ‘° : TCPSchool
μλ°μ μ μ