1~2. ์ปฌ๋ ์
ํ๋ ์์, ํต์ฌ ์ธํฐํ์ด์ค
์ปฌ๋ ์
ํ๋ ์์ (Collection Framework)
์ปฌ๋ ์
(Collection)
์ฌ๋ฌ ๊ฐ์ฒด(๋ฐ์ดํฐ)๋ฅผ ๋ชจ์ ๋์ ๊ฒ
ํ๋ ์์ (Framework
ํ์คํ, ์ ํํ๋ ์ฒด๊ณ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
์ปฌ๋ ์
ํ๋ ์์ (Collection Framework)
์ปฌ๋ ์
(๋ค์์ ๊ฐ์ฒด)์ ๋ค๋ฃจ๊ธฐ ์ํ ํ์คํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
์ปฌ๋ ์
์ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ๋ค๋ฃฐ ์ ์๋ ๋ค์ํ ํด๋์ค๋ฅผ ์ ๊ณต
์ปฌ๋ ์
ํด๋์ค (Collection Class)
๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ํด๋์ค (e.g. Vector, ArrayList, HashSet)
์ปฌ๋ ์
ํ๋ ์์์ ํต์ฌ ์ธํฐํ์ด์ค
List
: ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ. ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉ
ArrayList
LinkedList
Stack
Vector
๋ฑ
Set
: ์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ. ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์
Map
: ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ. ์์ ์ ์ง X / ํค ์ค๋ณต X / ๊ฐ ์ค๋ณต O
HashMap
TreeMap
HashTable
Properties
๋ฑ
3~6. Collection, List, Set, Map
Collection ์ธํฐํ์ด์ค์ ๋ฉ์๋
// ์ถ๊ฐ
boolean add (Object o)
boolean addAll (Collection c)
// ์ญ์
void clear ()
boolean remove (Object o)
boolean removeAll (Collection c)
boolean retainAll (Collection c)
// ๊ฒ์
boolean contains (Object o)
boolean containsAll (Collection c)
List ์ธํฐํ์ด์ค - ์์ O, ์ค๋ณต O
// Collection ์ธํฐํ์ด์ค ๋ฉ์๋ ํฌํจ
// ์ถ๊ฐ
void add ( int index, Object element)
boolean addAll ( int index, Collection c)
// ์ญ์
Object remove ( int index)
// ๊ฒ์
int indexOf (Object o)
int lastIndexOf (Object o)
// ์ฝ๊ธฐ
Object get ( int index)
// ์ฐ๊ธฐ
Object set ( int index, Object element)
// ์ ๋ ฌ
void sort (Comparator c)
Set ์ธํฐํ์ด์ค - ์์ X, ์ค๋ณต X
Collection ์ธํฐํ์ด์ค ๋ฉ์๋์ ๋์ผ
Map ์ธํฐํ์ด์ค - ์์ X, ์ค๋ณต (ํค X, ๊ฐ O)
// ์ถ๊ฐ
Object put (Object key, Object value)
void putAll (Map t)
// ์ญ์
Object remove (Object key)
// ๊ฒ์
boolean containsKey (Object key)
boolean containsValue (Object value)
Object get (Object key)
// ์ฝ๊ธฐ
Set entrySet ()
Set keySet ()
Collection values ()
7~11. ArrayList
ArrayList
๊ธฐ์กด์ Vector ๋ฅผ ๊ฐ์ ํ ๊ฒ์ผ๋ก ๊ตฌํ ์๋ฆฌ์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋์ผ
Vector ๋ ์์ฒด์ ์ผ๋ก ๋๊ธฐํ ์ฒ๋ฆฌ๊ฐ ๋์ด ์์
List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฏ๋ก, ์ ์ฅ ์์๊ฐ ์ ์ง๋๊ณ ์ค๋ณต์ ํ์ฉ
๋ฐ์ดํฐ์ ์ ์ฅ ๊ณต๊ฐ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉ (๋ฐฐ์ด ๊ธฐ๋ฐ)
ArrayList ์ ๋ฉ์๋
// ์์ฑ์
ArrayList ()
ArrayList (Collection c)
ArrayList ( int initialCapacity)
// ์ถ๊ฐ
boolean add (Object o)
void add ( int index, Object element)
boolean addAll (Collection c)
boolean addAll ( int index, Collection c)
// ์ญ์
boolean remove (Object o)
Object remove ( int index)
boolean removeAll (Collection c)
void clear ()
// ๊ฒ์
int indexOf (Object o)
int lastIndexOf (Object o)
boolean contains (Object o)
Object get ( int index)
Object set ( int index, Object element)
ArrayList ์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์ญ์ ๊ณผ์
for ( int i = list. size () - 1 ; i >= 0 ; i -- ) {
list. remove (i);
}
๋ง์ง๋ง ๊ฐ์ฒด๋ถํฐ ์ญ์ ํด์ผ ์ฑ๋ฅ ํฅ์ + ์ ์ฒด ์ญ์ ๊ฐ๋ฅ
Array ์ List ์ ์ฐจ์ด
// ๋ฐฐ์ด - ์ถ๊ฐ, ์ญ์ ๊ฐ ์ด๋ ต๋ค. ์ง์ ๊ตฌํํด์ผํ๋ค.
int [] numbers = { 10 , 20 , 30 , 40 , 50 };
// ๋ฆฌ์คํธ (ArrayList)
ArrayList numbers = new ArrayList ();
numbers. add ( 10 ); // ์ถ๊ฐ
numbers. remove ( 0 ); // ์ญ์
// ๋ฆฌ์คํธ (LinkedList)
LinkedList numbers = new LinkedList ();
numbers. add ( 10 ); // ์ถ๊ฐ
numbers. remove ( 0 ); // ์ญ์
Array
์ ์ธ๊ณผ ๋์์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ฉฐ, ๊ธฐ๋ฅ์ด ์์
๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ๋ฐ๋ผ์ ๊ฐ์ ์ ์งํ๊ธฐ ๋๋ฌธ์ null ๊ฐ์ด ๋จ๊ฒ ๋จ (๋ฉ๋ชจ๋ฆฌ ๋ญ๋น)
๋ฐ์ดํฐ์ ๊ฐฏ์๊ฐ ์ ํด์ ธ ์๊ณ ์์ฃผ ์ฌ์ฉํ ๊ฒฝ์ฐ Array ๊ฐ ๋ ํจ์จ์
List
์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ๋ชจ์ (Sequence ๋ผ๊ณ ๋ ๋ถ๋ฆ)
๊ฐ๋ณ๊ธธ์ด์ ํน์ฑ์ ๊ฐ๊ณ ์์ผ๋ฉฐ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์์
Array List ์ Linked List ๋๊ฐ์ง๊ฐ ์กด์ฌํจ
12~14. LinkedList
๋ฐฐ์ด์ ์ฅ๋จ์
์ฅ์
๋ฐฐ์ด์ ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ(์ ๊ทผ ์๊ฐ, access time)์ด ์งง์
๋จ์
ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด์ผ ํจ
ํฌ๊ธฐ ๋ณ๊ฒฝ์ ํผํ๊ธฐ ์ํด ์ถฉ๋ถํ ํฐ ๋ฐฐ์ด์ ์์ฑํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
๋น์์ฐจ์ ์ธ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์ญ์ ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆผ
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๊ธฐ ์ํด, ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ์ผ ํจ
๊ทธ๋ฌ๋ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ถ๊ฐ(๋์ ์ถ๊ฐ)์ ์ญ์ (๋๋ถํฐ ์ญ์ )๋ ๋น ๋ฆ
๋ฐฐ์ด์ ๋จ์ ์ ๋ณด์
๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ LinkedList ๋ ๋ถ์ฐ์์ ์ผ๋ก ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ
๋ฐ์ดํฐ์ ์ญ์ : ๋จ ํ ๋ฒ์ ์ฐธ์กฐ๋ณ๊ฒฝ๋ง์ผ๋ก ๊ฐ๋ฅ
๊ฐ ๋ฐ์ดํฐ๊ฐ ๋
ธ๋๋ก์จ ์๋ก๋ฅผ ์ฐ๊ฒฐํ๊ณ ์์
class Node {
Node next; // ๋ค์ ๋ฐ์ดํฐ์ ์ฃผ์
Object obj; // ๋ฐ์ดํฐ
}
๋ฐ์ดํฐ์ ์ถ๊ฐ : ํ๋ฒ์ Node ๊ฐ์ฒด ์์ฑ๊ณผ ๋ ๋ฒ์ ์ฐธ์กฐ๋ณ๊ฒฝ๋ง์ผ๋ก ๊ฐ๋ฅ
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
LinkedList - ์ฐ๊ฒฐ๋ฆฌ์คํธ. ๋ฐ์ดํฐ ์ ๊ทผ์ฑ์ด ๋์จ
Doubly Linked List - ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ. ์ ๊ทผ์ฑ ํฅ์
class Node {
Node next; // ๋ค์ ๋ฐ์ดํฐ์ ์ฃผ์
Node prvious; // ์ด์ ๋ฐ์ดํฐ์ ์ฃผ์
Object obj; // ๋ฐ์ดํฐ
}
Doubly Circular Linked List - ์ด์ค ์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ
์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ์์ ์ฒซ ๋ฒ์งธ ๋
ธ๋์ ๋ง์ง๋ง ๋
ธ๋๋ฅผ ์ฐ๊ฒฐํ ๊ตฌ์กฐ
ArrayList vs LinkedList - ์ฑ๋ฅ ๋น๊ต
์์ฐจ์ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ - ArrayList๊ฐ ๋น ๋ฆ
๋น์์ฐจ์ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ - LinkedList๊ฐ ๋น ๋ฆ
์ ๊ทผ์๊ฐ(access time) - ArrayList๊ฐ ๋น ๋ฆ
15~18. Stack๊ณผ Queue
Stack : LIFO(Last In First Out) ๊ตฌ์กฐ. ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ (๋ฐฐ์ด)
Queue : FIFO(First In First Out) ๊ตฌ์กฐ. ์ ์ผ ๋จผ์ ์ ์ฅํ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ (๋งํฌ๋ ๋ฆฌ์คํธ)
Stack
Stack st = new Stack (); // ๊ฐ์ฒด ์์ฑ ํ ์ฌ์ฉ ๊ฐ๋ฅ
// Stack์ด ๋น์ด์๋์ง ํ์ธ
boolean empty ()
// ๋งจ ์์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ
Object peek ()
// ๋งจ ์์ ์๋ ๊ฐ์ฒด๋ฅผ ๊บผ๋
Object pop ()
// Stack์ ๊ฐ์ฒด ์ ์ฅ
Object push (Object item)
// Stack ์ ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ฐพ์์ ์์น๋ฅผ ๋ฐํ (๋งจ ์์์ 1, 2, 3 ์์ผ๋ก)
int search (Object o)
Queue
Queue ๋ ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ์ง์ ๊ตฌํ ํน์ Queue ๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ์ฌ์ฉ
Queue q = new LinkedList (); // ์ดํ ์ฌ์ฉ ๊ฐ๋ฅ
// Queue์ ๊ฐ์ฒด ์ถ๊ฐ. ์ฑ๊ณตํ๋ฉด true ๋ฐํ. ์ ์ฅ๊ณต๊ฐ ๋ถ์กฑ ์ IllegalStateException ๋ฐ์
boolean add (Object o)
// Queue์์ ๊ฐ์ฒด๋ฅผ ๊บผ๋. ๋น์ด์์ผ๋ฉด NoSuchElementException ๋ฐ์
Object remove ()
// ์ญ์ ์์ด ์์๋ฅผ ์ฝ์. peek๊ณผ ๋ฌ๋ฆฌ ๋น์ด์์ผ๋ฉด NoSuchElementException ๋ฐ์
Object element ()
// Queue์ ๊ฐ์ฒด ์ถ๊ฐ. ์ฑ๊ณตํ๋ฉด true ๋ฐํ
boolean offer (Object o)
// Queue์์ ๊ฐ์ฒด๋ฅผ ๊บผ๋. ๋น์ด์์ผ๋ฉด null ๋ฐํ
Object poll ()
// ์ญ์ ์์ด ์์๋ฅผ ์ฝ์. ๋น์ด์์ผ๋ฉด null ๋ฐํ
Object peek ()
19~21. Stack๊ณผ Queue์ ํ์ฉ
Stack ํ์ฉ์ ์
์์๊ณ์ฐ
์์๊ดํธ๊ฒ์ฌ
์๋ํ๋ก์ธ์์ undo/redo
์น๋ธ๋ผ์ฐ์ ์ ๋ค๋ก/์์ผ๋ก
Queue ํ์ฉ์ ์
์ต๊ทผ์ฌ์ฉ๋ฌธ์
์ธ์์์
๋๊ธฐ๋ชฉ๋ก
๋ฒํผ
22~24. Iterator, Enumeration, Map
๊ฐ์
์ปฌ๋ ์
์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋๋ฐ ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค
Enumeration ์ Iterator ์ ๊ตฌ๋ฒ์ (์์์)
ListIterator ๋ Iterator ์ ์ ๊ทผ์ฑ์ ํฅ์ (๋จ๋ฐฉํฅ โ ์๋ฐฉํฅ) (์์์)
// ์ฝ์ด ์ฌ ์์๊ฐ ๋จ์์๋์ง ํ์ธ
boolean hasNext ()
// ๋ค์ ์์๋ฅผ ์ฝ์ด ์ด
Object next ()
๊ฐ๋
์ปฌ๋ ์
์ ์ ์ฅ๋ ์์๋ค์ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ ํ์คํํ ๊ฒ
List, Set, Map ๋ชจ๋ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ
์ฌ์ฉ๋ฒ
์ปฌ๋ ์
์ iterator()๋ฅผ ํธ์ถํด์ iterator๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ป์ด์ ์ฌ์ฉ
List list = new ArrayList ();
Iterator it = list. iterator ();
while (it. hasNext ()) { // ์ฝ์ด ์ฌ ์์๊ฐ ์๋์ง ํ์ธ
System.out. println (it. next ()); // ๋ค์ ์์๋ฅผ ์ฝ์ด์ด
}
Map๊ณผ Iterator
Map์๋ iterator()๊ฐ ์๋ค.
Map์ Collection์ ์์์ด ์๋
keySet(), entrySet(), values()๋ฅผ ํธ์ถํด์ผ ํจ
Map map = new HashMap ();
Iterator it = map. entrySet (). iterator ();
25~29. Arrays
Arrays - ๋ฐฐ์ด์ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํ ๋ฉ์๋(static) ์ ๊ณต
๋ฐฐ์ด์ ์ถ๋ ฅ
int [] arr = { 1 , 2 , 3 , 4 , 5 };
String list = Arrays. toString (arr); // [1,2,3,4,5] ๋ฐํ
๋ฐฐ์ด์ ๋ณต์ฌ
int [] arr = { 1 , 2 , 3 , 4 , 5 };
int [] arr2 = Arrays. copyOf (arr, 3 ); // arr2 = [0,1,2]
int [] arr3 = Arrays. copyOfRange (arr, 2 , 4 ); // arr3 = [2,3]
๋ฐฐ์ด ์ฑ์ฐ๊ธฐ
int [] arr = new int [ 5 ];
Arrays. fill (arr, 9 ); // arr = [9,9,9,9,9]
Arrays. setAll (arr, (i) -> ( int )(Math. random () * 5 ) + 1 ); // arr = [1,5,2,1,1]
๋ฐฐ์ด์ ์ ๋ ฌ๊ณผ ๊ฒ์
int [] arr = { 3 , 2 , 0 , 1 , 4 };
int idx = Arrays. binarySearch (arr, 2 ); // idx = -5 <- ์๋ชป๋ ๊ฒฐ๊ณผ
// ์ด์งํ์์ ์ ๋ ฌ๋์ด ์์ ๋๋ง ๊ฐ๋ฅ
Arrays. sort (arr); // arr ์ ๋ ฌ
System.out. println (Arrays. toString (arr)); // [0,1,2,3,4]
int idx = Arrays. binarySearch (arr, 2 ); // idx = 2 <- ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ
๋ค์ฐจ์ ๋ฐฐ์ด์ ์ถ๋ ฅ
int [] arr = { 0 , 1 , 2 , 3 , 4 };
int [][] arr2D = {{ 11 , 22 }, { 21 , 22 }};
System.out. println (Arrays. toString (arr)); // [0, 1, 2, 3, 4]
System.out. println (Arrays. deepToString (arr2D)); // [[11, 12], [21, 22]]
๋ค์ฐจ์ ๋ฐฐ์ด์ ๋น๊ต
String [][] str2D = new String [][]{{ "aaa" , "bbb" },{ "AAA" , "BBB" }};
String [][] str2D2 = new String [][]{{ "aaa" , "bbb" },{ "AAA" , "BBB" }};
System.out. println (Arrays. equals (str2D, str2D2)); // false
System.out. println (Arrays. deepEquals (str2D, str2D2)); // true
๋ฐฐ์ด์ List๋ก ๋ณํ
List list = Arrays. asList ( new Integer []{ 1 , 2 , 3 , 4 , 5 }); // list = [1,2,3,4,5]
List list = Arrays. asList ( 1 , 2 , 3 , 4 , 5 ); // list = [1,2,3,4,5]
list. add ( 6 ) // UnsupportedOperationException ์์ธ ๋ฐ์. ์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ ๋๋ฌธ์
List list = new ArrayList (Arrays. asList ( 1 , 2 , 3 , 4 , 5 )); // ์๋ก์ด ArrayList. ๋ณ๊ฒฝ๊ฐ๋ฅ
30~33. Comparator์ Comparable
๊ฐ์ฒด ์ ๋ ฌ์ ํ์ํ ๋ฉ์๋(์ ๋ ฌ๊ธฐ์ค ์ ๊ณต)๋ฅผ ์ ์ํ ์ธํฐํ์ด์ค
Comparable
๊ธฐ๋ณธ ์ ๋ ฌ๊ธฐ์ค์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ
Comparator
๊ธฐ๋ณธ ์ ๋ ฌ๊ธฐ์ค ์ธ์ ๋ค๋ฅธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ํ ๋ ์ฌ์ฉ
public interface Comparable { // o1, o2 ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ต
int compareTo (Object o ); // ์ฃผ์ด์ง ๊ฐ์ฒด(o)๋ฅผ ์์ ๊ณผ ๋น๊ต
}
public interface Comparator {
int compare (Object o1 , Object o2 ); // o1, o2 ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ต
boolean equals (Object obj ); // equals๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ผ๋ ๋ป
}
compare()
์ compareTo()
๋ ๋ ๊ฐ์ฒด์ ๋น๊ต๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ์์ฑ
public final class Integer extends Number implements Comparable {
...
public int compareTo (Integer anotherInteger ) {
int v1 = this .value;
int v2 = anotherInteger.value;
// ๊ฐ์ผ๋ฉด 0, ์ฐ์ธก์ด ํฌ๋ฉด -1, ์ข์ธก์ด ํฌ๋ฉด 1 ๋ฐํ
return (v1 < v2 ? - 1 : (v1 == v2 ? 0 : 1 ));
}
}
Integer์ Comparable
public final class Integer extends Number implements Comparable {
...
public int compareTo (Object o ) {
return compareTo ((Integer)o);
}
public int compareTo (Integer anotherInteger ) {
int thisValue = this .value;
int anotherValue = anotherInteger.value;
// ๊ฐ์ผ๋ฉด 0, ๋น๊ต๋์์ด ํฌ๋ฉด -1, ์์ ์ด ํฌ๋ฉด 1 ๋ฐํ
return (thisValue < anotherValue ? - 1 : (thisValue == anotherValue ? 0 : 1 ));
}
}
34~38. HashSet
HashSet
Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์ปฌ๋ ์
ํด๋์ค
์์๋ฅผ ์ ์งํ๋ ค๋ฉด, LinkedHashSet ํด๋์ค๋ฅผ ์ฌ์ฉ
TreeSet
๋ฒ์ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ ๋ฆฌํ ์ปฌ๋ ์
ํด๋์ค
HashSet ๋ณด๋ค ๋ฐ์ดํฐ ์ถ๊ฐ, ์ญ์ ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆผ
HashSet - ์ฃผ์ ๋ฉ์๋
// ์์ฑ์
HashSet ()
HashSet (Collection c)
HashSet ( int initialCapacity) // ์ด๊ธฐ์ฉ๋ ์ค์
HashSet ( int initialCapacity, float loadFactor) // ์ธ์ ์ฉ๋์ ๋๋ฆด๊ฑด์ง
// ์ถ๊ฐ
boolean add (Object o)
boolean addAll (Collection c) // ํฉ์งํฉ
// ์ญ์
boolean remove (Object o)
boolean removeAll (Collection c) // ๊ต์งํฉ
// ๋ชจ๋์ญ์
void clear ()
// ์กฐ๊ฑด๋ถ์ญ์
boolean retainAll (Collection c) // ์ฐจ์งํฉ
// ํฌํจ ์ฌ๋ถ ํ์ธ
boolean contains (Object o)
boolean containsAll (Collection c) // ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ํฌํจํ๋์ง
// ๋น์๋์ง ํ์ธ
boolean isEmpty ()
// ์ ์ฅ๋ ๊ฐ์ฒด ์ ํ์ธ
int size ()
// ๊ฐ์ฒด๋ฐฐ์ด๋ก ๋ฐํ
Object [] toArray ()
Object [] toArray ( Object [] a)
HashSet - ์์ 3
HashSet์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๊ธฐ์กด์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธ
๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ์ ์ฅ, ์์ผ๋ฉด ์ ์ฅ X
boolean add(Object o)
๋ ์ ์ฅํ ๊ฐ์ฒด์ equals()
์ hashCode()
๋ฅผ ํธ์ถ
equals()
์ hashCode()
๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์์ด์ผ ํจ
public boolean equals (Object o) {
if ( ! (obj instanceof Person)) {
return false ;
}
Person tmp = (Person)obj;
return name. equals (tmp.name) && age == tmp.age;
}
public int hashCode () {
return Objects. hash (name, age);
}
39~45. TreeSet
TreeSet - ๋ฒ์ ํ์, ์ ๋ ฌ
์ด์ง ํ์ ํธ๋ฆฌ(binary search tree)๋ก ๊ตฌํ. ๋ฒ์ ํ์๊ณผ ์ ๋ ฌ์ ์ ๋ฆฌ.
์ด์ง ํธ๋ฆฌ๋ ๋ชจ๋ ๋
ธ๋๊ฐ ์ต๋ 2๊ฐ์ ํ์ ๋
ธ๋๋ฅผ ๊ฐ์
๊ฐ ๋
ธ๋๊ฐ ํธ๋ฆฌ ํํ๋ก ์ฐ๊ฒฐ (LinkedList์ ๋ณํ)
์ด์ง ํ์ ํธ๋ฆฌ(binary search tree)
๋ถ๋ชจ๋ณด๋ค ์์ ๊ฐ์ ์ผ์ชฝ, ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ ์ ์ฅ
๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์ถ๊ฐ, ์ญ์ ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆผ (๋น๊ต ํ์ ์ฆ๊ฐ)
TreeSet - ๋ฐ์ดํฐ ์ ์ฅ๊ณผ์ boolean add(Object o)
TreeSet ์ 7,4,9,1,5 ์ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋
TreeSet - ์ฃผ์ ์์ฑ์์ ๋ฉ์๋
// ์์ฑ์
TreeSet ()
HashSet (Collection c)
TreeSet (Comparator comp) // ์ฃผ์ด์ง ์ ๋ ฌ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ TreeSet ์์ฑ
Object first () // ์ ๋ ฌ๋ ์์์์ ์ฒซ๋ฒ์งธ ๊ฐ์ฒด ๋ฐํ
Object last () // ์ ๋ ฌ๋ ์์์์ ๋ง์ง๋ง ๊ฐ์ฒด ๋ฐํ
Object ceiling (Object o) // ์ง์ ๋ ๊ฐ์ฒด์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐํ. ์์ผ๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ํฐ ๊ฐ ๋ฐํ
Object floor (Object o) // ์ง์ ๋ ๊ฐ์ฒด์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐํ. ์์ผ๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ์์ ๊ฐ ๋ฐํ
Object higher (Object o) // ์ง์ ๋ ๊ฐ์ฒด๋ณด๋ค ํฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ ๋ฐํ
Object lower (Object o) // ์ง์ ๋ ๊ฐ์ฒด๋ณด๋ค ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ ๋ฐํ
SortedSet subSet (Object fromElement, Object toElement) // ๋ฒ์ ๊ฒ์์ ๊ฒฐ๊ณผ ๋ฐํ
SortedSet headSet (Object toElement) // ์ง์ ๋ ๊ฐ์ฒด๋ณด๋ค ์์ ๊ฐ์ฒด๋ค
SortedSet tailSet (Object fromElement) // ์ง์ ๋ ๊ฐ์ฒด๋ณด๋ค ํฐ ๊ฐ์ฒด๋ค
46~51. HashMap
HashMap๊ณผ Hashtable - ์์ X, ์ค๋ณต(ํค X, ๊ฐ O)
Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ. ๋ฐ์ดํฐ๋ฅผ ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ
HashMap(๋๊ธฐํ X)์ Hashtable(๋๊ธฐํO)์ ์ ๋ฒ์
HashMap
Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์ปฌ๋ ์
ํด๋์ค
์์๋ฅผ ์ ์งํ๋ ค๋ฉด LinkedHashMap
ํด๋์ค ์ฌ์ฉ
TreeMap
๋ฒ์ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ ๋ฆฌํ ์ปฌ๋ ์
ํด๋์ค
HashMap ๋ณด๋ค ๋ฐ์ดํฐ ์ถ๊ฐ, ์ญ์ ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆผ
HashMap์ ํค(key)์ ๊ฐ(value)
ํด์ฑ(hashing) ๊ธฐ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ. ๋ฐ์ดํฐ๊ฐ ๋ง์๋ ๊ฒ์์ด ๋น ๋ฆ
Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ. ๋ฐ์ดํฐ๋ฅผ ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ
public class HashMap extends AbstractMap implements Map , Cloneable , Serializable {
transient Entry [] table;
...
static class Entry implements Map.Entry {
final Object key;
Object value;
...
}
}
ํด์ฑ(hashing)
ํด์ํจ์(hash function)๋ก ํด์ํ
์ด๋ธ(hash table)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ฒ์
ํด์ํ
์ด๋ธ์ ๋ฐฐ์ด๊ณผ ๋งํฌ๋ ๋ฆฌ์คํธ๊ฐ ์กฐํฉ๋ ํํ
ํด์ํจ์๋ ๊ฐ์ ํค์ ๋ํด ํญ์ ๊ฐ์ ํด์์ฝ๋๋ฅผ ๋ฐํํด์ผ ํจ (์ ์ฅ ํ ๊ฒ์์ ์ํด)
์๋ก ๋ค๋ฅธ ํค์ผ์ง๋ผ๋ ๊ฐ์ ๊ฐ์ ํด์์ฝ๋๋ฅผ ๋ฐํํ ์ ์์
HashMap - ์ฃผ์ ๋ฉ์๋
// ์์ฑ์
HashMap ()
HashMap ( int initialCapacity) // ์ด๊ธฐ์ฉ๋ ์ค์
HashMap ( int initialCapacity, float loadFactor) // ์ธ์ ์ฉ๋์ ๋๋ฆด๊ฑด์ง
HashMap (Map m) // ๋ค๋ฅธ Map์ HashMap์ผ๋ก ๋ณ๊ฒฝ
// ์ถ๊ฐ
Object put (Object key, Object value)
void putAll (Map m)
// ์ญ์
Object remove (Object key)
// ์์
Object replace (Object key, Object value)
boolean replace (Object key, Object oldValue, Object newValue)
// ์ฝ์ด์ค๊ธฐ
Set entrySet ()
Set keySet ()
Collection values ()
// ํ์
Object get (Object key)
Object getOrDefault (Object key, Object defaultValue)
boolean containsKey (Object key)
boolean containsValue (Object value)
52~54. Collections ํด๋์ค
Collections - ์ปฌ๋ ์
์ ์ํ ๋ฉ์๋(static)๋ฅผ ์ ๊ณต
์ปฌ๋ ์
์ฑ์ฐ๊ธฐ, ๋ณต์ฌ, ์ ๋ ฌ, ๊ฒ์ - fill(), copy(), sort(), binarySearch() ๋ฑ
์ปฌ๋ ์
์ ๋๊ธฐํ - synchronizedXXX()
๋ณ๊ฒฝ๋ถ๊ฐ(readOnly) ์ปฌ๋ ์
๋ง๋ค๊ธฐ - unmodifiableXXX()
์ฑ๊ธํค ์ปฌ๋ ์
๋ง๋ค๊ธฐ(๊ฐ์ฒด 1๊ฐ๋ง ์ ์ฅ) - singletonXXX()
ํ ์ข
๋ฅ์ ๊ฐ์ฒด๋ง ์ ์ฅํ๋ ์ปฌ๋ ์
๋ง๋ค๊ธฐ - checkedXXX()