¡¡
¸¸µçÀÌ: ¼ÛÁöÈÆ
¼Ò¼Ó:
JavaCafe ºÎ½Ã¼¥
email:
johnleen@hanmail.net
¡¡
À̹ø °Á¸¦ ÅëÇØ ÀÚ¹ÙÀÇ ÀڷᱸÁ¶ÀÎ Collection Framework ¿¡ ´ëÇØ ÀÚ¼¼ÇÏ°Ô ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. °¡Àå ±âº»ÀûÀ̰í Áß¿äÇÑ ºÎºÐÀÓ¿¡µµ ºÒ±¸Çϰí ÇÁ·Î±×·¡¹ÖÀ» °øºÎÇÏ´Â ¸¹Àº »ç¶÷µéÀÌ ¼ÒȦÈ÷ »ý°¢ÇÏ´Â ºÎºÐÀÌ´Ù. ÀÌ ±âȸ¿¡ ÇÊÀÚÀÇ °Á¸¦ ÅëÇØ ´Ù½Ã Çѹø ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇØ ±íÀÌ ÀÖ´Â ÀÌÇØ¸¦ ÇÒ ¼ö ÀÖ¾úÀ¸¸é ÇÑ´Ù. ÀÌ °Á¿¡¼± 1.4¿¡ Ãß°¡µÈ »õ·Î¿î ÀڷᱸÁ¶, Á¤È®ÇÏ°Ô 2°³ÀÇ Map °è¿ Ŭ·¡½º¿Í 1°³ÀÇ Set °è¿ Ŭ·¡½º, ÃÑ 3°¡Áö¸¦ Æ÷ÇÔÇØ¼ ±× ÀÌÀü¿¡ Á¸ÀçÇÏ´Â ÀڷᱸÁ¶ Ŭ·¡½ºµé ¸ðµÎ¸¦ ¼³¸íÇÑ´Ù.
¡¡
1. ÀÚ¹ÙÀÇ ÀڷᱸÁ¶ Collection Framework ÀÇ ±¸Á¶
´ÙÀ½ ±×¸²Àº java.util ÆÐŰÁö ¾ÈÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÀÎÅÍÆäÀ̽º¸¦ °ü°è¸¦ ³ªÅ¸³»´Â UML Class
Diagram À» º¸¿©ÁÖ°í ÀÖ´Ù.
¾Æ·¡ ±×¸²¿¡¼ ½Ç¼±À¸·Î ±×·ÁÁø È»ìÇ¥´Â »ó¼Ó(extend)À» ÀǹÌÇÑ´Ù. ¶ÇÇÑ "::" À» ±âÁØÀ¸·Î ¿ÞÂÊÀº
ÆÐŰÁö, ¿À¸¥ÂÊÀº À̸§À» ³ªÅ¸³½´Ù. ³×¸ð ¾ÈÀÇ º¸¶ó»ö µ¿±×¶ó¹Ì ¾È¿¡ i ¶ó°í ½áÀÖ´Â °ÍÀº ÇØ´ç °´Ã¼°¡ ÀÎÅÍÆäÀ̽º¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¶Ç Ä÷º¼Ç
ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½ºµéÀ» ¼³¸íÇÒ ¶§ ³ª¿À°ÚÁö¸¸ Á¡¼±À¸·Î ±×·ÁÁø È»ìÇ¥´Â ±¸Çö(implements)À» ÀǹÌÇϰí Ŭ·¡½ºÀ̱⠶§¹®¿¡ ³ì»ö µ¿±×¶ó¹Ì¾È¿¡ C ¶ó´Â ±ÛÀÚ°¡ ¾²¿©ÀÖ´Â °ÍÀ» º¸°Ô µÉ °ÍÀÌ´Ù. (Âü°í·Î ÇÊÀÚ´Â ÀÌŬ¸³½º Ç÷¯±×ÀÎÀ¸·Î Á¦°øµÇ´Â OMANDO ¶ó´Â UML ÅøÀ» »ç¿ëÇß´Ù)

±×¸²¿¡¼ º¼ ¼ö ÀÖµíÀÌ ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â Å©°Ô µÎ°¡Áö·Î ±¸ºÐµÈ´Ù. ¹Ù·Î Collection °ú Map ÀÌ´Ù. Collection Àº ´Ù½Ã Set °ú List ·Î ±¸ºÐµÈ´Ù.
¶ÇÇÑ ¾Æ·¡ Class Diagram ¿¡¼ º¼ ¼ö ÀÖµíÀÌ Collection ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½ºµé°ú ¿¬°èÇØ¼ Æí¸®ÇÏ°Ô ÀúÀåµÈ ¿ä¼Ò(Element)µéÀ» ´Ù·ê ¼ö ÀÖ´Â 2°¡Áö ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Ù.

Ç×»ó ½£°ú ³ª¹«¸¦ °°ÀÌ º¼ ¼ö ÀÖ´Â ½Ã¾ß¸¦ °®Ãß¾î¾ß ¹«¾ùÀ̵ç Á¦´ë·Î, ±íÀÌ ÀÖ°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ ´Ù½Ã Çѹø À§¿¡ ÀÖ´Â ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©ÀÇ Àüü ±¸Á¶¸¦ Ç¥ÇöÇÑ Class Diagram À» »ìÆìº¸µµ·Ï ÇÏÀÚ. °¢ ÀÎÅÍÆäÀ̽ºµé¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ¾Æ·¡ ºÎºÐ¿¡¼ Çϵµ·Ï ÇϰڴÙ.
2. Collection Framework ÀÎÅÍÆäÀ̽ºµé°ú Ŭ·¡½ºµé
±×·³ ÀÌÁ¦ ÀÚ¹ÙÀÇ ÀڷᱸÁ¶ÀÎ Collection, Set, List, Map µîÀº ¾î¶² Ư¡¿¡ µû¶ó ±¸ºÐÇÑ °ÍÀÎÁö¸¦ ¾Ë¾Æº¸°Ú´Ù. ¾Æ·¡ÀÇ Ç¥¿¡ °¢°¢ÀÇ Æ¯¼ºÀ» Á¤¸®Çسù´Ù. ¾Æ·¡ Ç¥¸¦ ÁÖÀÇ ±í°Ô º¸µµ·Ï ÇÏÀÚ.
|
Package |
Definition |
|
java.util.Collection |
¼ø¼ ¾ø´Â ´Ü¼øÇÑ ¿ä¼ÒµéÀÇ ÁýÇÕ |
|
java.util.Set |
Áߺ¹À» Çã¿ëÇÏÁö ¾Ê´Â ¿ä¼ÒµéÀÇ ÁýÇÕ |
|
java.util.List |
¼øÂ÷Àû ³ª¿, ¼ø¼ÁöÁ¤ÀÌ °¡´ÉÇÑ ¿ä¼ÒµéÀÇ ÁýÇÕ |
|
java.util.Map |
Key¿Í Key¿¡ ´ëÀÀÇÏ´Â °ªÀ¸·Î ÀÌ·ç¾îÁø ±¸Á¶ |
|
java.util.SortedSet |
°ªµéÀÌ Á¤·ÄµÈ Set |
|
java.util.SortedMap |
key °¡ Á¤·ÄµÈ Map |
±×·³ ¸ÕÀú Collection ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¾î¶² Ŭ·¡½ºµéÀÌ Á¸ÀçÇÏ´ÂÁö Set, List ·Î ³ª´²¼ »ìÆìº¸ÀÚ. ¾Æ·¡ÀÇ Ç¥´Â Collection ÀÇ ±¸¼ºÀ» Ç¥ÇöÇÑ Ç¥´Ù. Ç¥¿¡¼ ÀÎÅÍÆäÀ̽º¿Í ÇØ´ç ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ½ÇÁ¦ Ŭ·¡½ºµé¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
| Interface | Implementation | ||||
|---|---|---|---|---|---|
|
Collection |
Set |
HashSet |
LinkedHashSet |
TreeSet |
|
List |
ArrayList |
LinkedList |
Vector |
Stack |
|
¾Æ·¡ÀÇ Ç¥´Â Map ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½ºµéÀÌ´Ù. ¿ª½Ã ÀÎÅÍÆäÀ̽º¿Í ±× ±¸Çö Ŭ·¡½ºµéÀ» º¸¿©ÁÖ°í ÀÖ´Ù.
|
Interface |
Implementation |
|||||
| Map | HashMap | LinkedHashMap | IdentityHashMap | WeakHashMap | Hashtable | TreeMap |
ÀÌÁ¦ ÇØ´ç ÀÎÅÍÆäÀ̽º¿Í ±× ±¸Çö Ŭ·¡½ºµéÀÇ Æ¯Â¡ÀÌ ¾î¶² °ÍÀÌ°í ¾î¶»°Ô »ç¿ëµÇ´Â¸¦ ÀÚ¼¼È÷ »ìÆìº¸µµ·Ï ÇϰڴÙ.
¿ì¼± ¸ÕÀú Collection ÀÎÅÍÆäÀ̽º¸¦ »ìÆìº¸µµ·Ï ÇÏÀÚ.
| package
java.util; public interface Collection { // Query Operations int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); Object[] toArray(Object a[]); // Modification Operations boolean add(Object o); boolean remove(Object o);
// Bulk Operations |
À§ Äڵ忡¼ ÁÖ¼®À¸·Î ¼³¸íµÈ ºÎºÐ¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ ±â´É¿¡ µû¶ó 4°¡Áö ºÐ·ùÀÇ ¸Þ¼Òµåµé·Î ³ª´ ¼ö ÀÖ´Ù. ±×·³ °¢ ±â´É¿¡ µû¸¥ ¸Þ¼ÒµåµéÀ» ÀÚÁÖ »ç¿ëµÇ´Â °Íµé À§ÁÖ·Î °£´ÜÈ÷ »ìÆìº¸µµ·Ï ÇϰڴÙ.
ù¹øÂ°·Î Äõ¸®(Query) ¿ÀÆÛ·¹À̼ǵéÀ» »ìÆìº¸ÀÚ. Äõ¸® ¿ÀÆÛ·¹À̼ÇÀº Ä÷º¼Ç ¾È¿¡ ÀúÀåµÈ ¿ä¼ÒÀÇ °³¼ö(size() ¸Þ¼Òµå)³ª ÀúÀåµÈ ¿ä¼Ò°¡ ÀÖ´ÂÁö(isEmpty() ¸Þ¼Òµå), Ä÷º¼Ç ¾È¿¡ ÇØ´ç ¸Þ¼Òµå ¾È¿¡ ÆÄ¶ó¹ÌÅÍ·Î Àü´ÞÇÑ Object ¿ä¼Ò°¡ µé¾îÀÖ´ÂÁö(contains(Object o) ¸Þ¼Òµå) µîÀÇ ¿©ºÎ¸¦ ÁúÀÇÇÏ´Â ¸Þ¼ÒµåµéÀÇ ºÐ·ù´Ù. ³ªÁß¿¡ ¿¹Á¦ ¼Ò½º¿¡¼µµ »ìÆìº¸°ÚÁö¸¸ iterator() ¸Þ¼Òµå´Â Ä÷º¼Ç ¾È¿¡ ÀúÀåµÈ ¿ä¼ÒµéÀ» Iterator ¿¡ ¼øÂ÷ÀûÀ¸·Î ÀúÀåÇÑ ÈÄ ±× Iterator °´Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù.
µÎ¹øÂ°´Â º¯°æ(Modification) ¿ÀÆÛ·¹À̼ǵéÀÌ´Ù. ¸Þ¼Òµå À̸§¸¸À¸·Îµµ ½±°Ô ¾Ë ¼ö ÀÖµíÀÌ ÇϳªÀÇ ¿ä¼Ò¸¦ Ä÷º¼Ç¿¡ Ãß°¡(add(Object o)), »èÁ¦(remove(Object o)) ÇÏ´Â ¸Þ¼ÒµåµéÀÌ´Ù.
¼¼¹øÂ°´Â ´ë·®À¸·Î ¿ä¼ÒÀÇ º¯°æÀ» °¡ÇÏ´Â ¿ÀÆÛ·¹À̼ǵéÀÌ´Ù. ¿©±â¼ »ó´çÈ÷ °£ÆíÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Â addAll(Collection c) ¸Þ¼Òµå°¡ Àִµ¥ À̰ÍÀº ÆÄ¶ó¹ÌÅÍ·Î µé¾î¿Â Ä÷º¼Ç °´Ã¼°¡ °®°í ÀÖ´Â ¿ä¼Òµé ¸ðµÎ¸¦ ÀúÀåÇÏ´Â ¸Þ¼ÒµåÀ̰í removeAll(Collection c) ¸Þ¼Òµå´Â ¹Ý´ë·Î ÆÄ¶ó¹ÌÅÍ·Î µé¾î¿Â Ä÷º¼Ç °´Ã¼°¡ °®°í ÀÖ´Â ¿ä¼Òµé ¸ðµÎ¸¦ Á¦°ÅÇÑ´Ù. À̿ܿ¡ clear() ¸Þ¼Òµå´Â ÇØ´ç Ä÷º¼Ç °´Ã¼ÀÇ ¸ðµç ¿ä¼Ò¸¦ ÀüºÎ Á¦°ÅÇÑ´Ù.
¸¶Áö¸·À¸·Î ºñ±³(Comparison) ¹× ÇØ½Ì(Hashing)À» À§ÇÑ ¿ÀÆÛ·¹À̼ǵéÀ» Á¤ÀÇÇÏ´Â ¸Þ¼Òµå´Ù. ÀÚÁÖ ¾²ÀÌÁö ¾ÊÀ¸¹Ç·Î º°µµÀÇ ¾ð±ÞÀº ÇÏÁö ¾Ê°Ú´Ù.
2-2. Set ÀÎÅÍÆäÀ̽º¿Í ±¸Çö Ŭ·¡½ºµé
Set ÀÎÅÍÆäÀ̽º¸¦ »ìÆìº¸ÀÚ. Collection ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇϹǷΠū Â÷ÀÌÁ¡Àº ¾ø°í ´ÜÁö "Set" Àº Áߺ¹À» Çã¿ëÇÏÁö ¾Ê´Â ÀڷᱸÁ¶¿´´Ù´Â °ÍÀ» ´Ù½Ã Çѹø ±â¾ïÇϵµ·Ï ÇÏÀÚ.
| package
java.util; public interface Set extends Collection { // Query Operations int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); Object[] toArray(Object a[]); // Modification Operations boolean add(Object o); boolean remove(Object o);
// Bulk Modification Operations |
À§ Äڵ带 º¸¸é Collection °ú µ¿ÀÏÇÑ ¸Þ¼Òµå¸¸À» Á¦°øÇØÁÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ´ÜÁö ±¸Çö Ŭ·¡½º ³»ºÎ¿¡ equals(Object o) ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼ Áߺ¹À» Çã¿ëÇÏÁö ¾Êµµ·Ï üũÇÏ´Â ±â´ÉÀÌ ´õÇØÁ® ÀÖ´Ù.
±×·³ ÀÌÁ¦ºÎÅÍ Set À» ±¸ÇöÇÑ Å¬·¡½ºµéÀ» »ìÆìº¸µµ·Ï ÇϰڴÙ.
¡¡
2-2-2. LinkedHashSet(1.4¿¡¼ Ãß°¡)
¡¡
¡¡
2-3. List ÀÎÅÍÆäÀ̽º¿Í ±¸Çö Ŭ·¡½ºµé
List ÀÎÅÍÆäÀ̽º´Â ¼ø¼ ºÙÀÏ ¼ö ÀÖ´Â Ä÷º¼ÇÀÌ´Ù. ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ëÀÚ´Â List ³»ÀÇ ¾îµð¿¡ °¢ ¿ä¼Ò°¡ »ðÀԵɱ Á¤¹ÐÇÏ°Ô Á¦¾î ÇÒ ¼ö ÀÖ´Ù. »ç¿ëÀÚ´Â Á¤¼ö°ªÀÇ À妽º(List ³»ÀÇ À§Ä¡)¿¡ ÀÇÇØ ¿ä¼Ò¿¡ ¾×¼¼½º(access) Çϰųª List ³»ÀÇ ¿ä¼Ò¸¦ °Ë»öÇÒ ¼ö°¡ ÀÖ´Ù. Set °ú´Â ´Ù¸£°Ô, º¸Åë ÀϹÝÀûÀ¸·Î List´Â Áߺ¹ÇÏ´Â ¿ä¼Ò¸¦ Çã°¡ÇÑ´Ù.
| package
java.util; public interface List extends Collection { // Query Operations int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); Object[] toArray(Object a[]); // Modification Operations boolean add(Object o); boolean remove(Object o);
// Bulk Modification Operations |
Collection ÀÎÅÍÆäÀ̽º¿¡¼ Á¦°øÇØÁÖ´ø ¸Þ¼Òµåµé¿¡ List ÀÎÅÍÆäÀ̽ºÀÇ Æ¯Â¡ÀΠƯÁ¤ À§Ä¡ÀÇ ¿ä¼Ò¸¦ ã°Å³ª ƯÁ¤ À§Ä¡¿¡ ¿ä¼Ò¸¦ Ãß°¡ÇÏ´Â µîÀÇ ¸Þ¼ÒµåµéÀÌ Ãß°¡µÇ¾ú´Ù. ¸Þ¼Òµå À̸§ÀÌ ¿ö³« ÀϰüµÇ°í ¸íÈ®ÇÏ°Ô Àß Áö¾îÁ® Àֱ⠶§¹®¿¡(ÇÊÀÚ°¡ ÀÚ¹Ù¸¦ ÁÁ¾ÆÇÏ´Â ÀÌÀ¯ Áß Çϳª) ¸Þ¼Òµå À̸§¸¸À¸·Îµµ ´ë° ¾î¶² ¿ªÇÒÀ» ÇÏ´ÂÁö ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. List ÀÎÅÍÆäÀ̽º¿¡¼ Ãß°¡µÈ ¸Þ¼ÒµåµéÀº Bold ¸¦ ÁÖ¾î Ç¥ÇöÇØ³ù´Ù.
¡¡
¡¡
¡¡
¡¡
2-4. Map ÀÎÅÍÆäÀ̽º¿Í ±¸Çö Ŭ·¡½ºµé
Map ÀÎÅÍÆäÀ̽º´Â Ű(key)¸¦ °ª(value)¿¡ ¸ÅÇÎ(mapping) ÇÑ´Ù. ¶ÇÇÑ MapÀº µ¿ÀÏÇÑ Å°¸¦ º¹¼ö µî·ÏÇÒ ¼ö ¾ø°í °¢ Ű´Â 1 °³ÀÇ °ª¹Û¿¡ ¸ÅÇÎ ÇÒ ¼ö ¾ø´Ù. Áï, ÇϳªÀÇ Å° °ª¿¡ ´ëÀÀÇÏ´Â ÇϳªÀÇ °ªÀ» °®´Â ÀڷᱸÁ¶´Ù.
|
package
java.util; |
// ¼³¸í
¡¡
2-4-2. LinkedHashMap(1.4¿¡¼ Ãß°¡)
¡¡
2-4-3. IdentityHashMap(1.4¿¡¼ Ãß°¡)
¡¡
¡¡
¡¡
¡¡
2-5. Enumeration ¿Í Iterator ÀÎÅÍÆäÀ̽º
Collection Framework ¿¡´Â Enumeration ¿Í Iterator ¶ó´Â ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Ù. »çÀüÀûÀÎ Àǹ̷δ ¹Ýº¹, ¼øÈ¯À̶ó´Â ¶æÀ» Áö´Ï°í ÀÖ´Ù. ¾î¶² °´Ã¼µéÀÇ ¸ðÀÓÀÌ ÀÖÀ» ¶§(Collection °è¿ ±¸Çö Ŭ·¡½ºµé, Collection ÀÎÅÍÆäÀ̽º¿¡ iterator() ¸Þ¼Òµå°¡ ÀÖ¾úÀ½À» ±â¾ïÇØ¶ó) ÀÌ °´Ã¼µéÀ» ¾î¶² ¼ø¼¿¡ ÀÇÇØ¼ Çϳª¾¿ ²¨³» ¾²±â À§ÇÑ ÀÎÅÍÆäÀ̽º¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿ø·¡ Java 2 ÀÌÀü´Â Enumeration À̶ó´Â ÀÎÅÍÆäÀ̽º°¡ ¸¹ÀÌ »ç¿ëµÇ¾úÁö¸¸ ÃÖ±Ù¿¡´Â Iterator ÀÎÅÍÆäÀ̽º°¡ ´õ ¸¹ÀÌ »ç¿ëµÈ´Ù. ±× ÀÌÀ¯´Â °¢ ÀÎÅÍÆäÀ̽º¸¦ »ìÆìº¸¸ç ¾Ë¾Æº¸±â·Î ÇϰڴÙ.
¾Æ·¡ÀÇ Enumeration ÀÎÅÍÆäÀ̽ºÀÇ Äڵ带 º¸ÀÚ.
|
package
java.util; |
ÀÌ ÀÎÅÍÆäÀ̽º´Â ´ÜÁö µÎ°³ÀÇ ¸Þ¼Òµå¸¸À» Á¦°øÇÑ´Ù. ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ëÀº »ó´çÈ÷ °£´ÜÇÏ´Ù. hasMoreElements() ¸Þ¼Òµå·Î ÀÎÅÍÆäÀ̽º ¾È¿¡ ´ÙÀ½ ¿ä¼Ò°¡ ÀÖ´ÂÁö¸¦ ÁúÀÇÇÑ´Ù. ¸¸¾à true °¡ ¸®ÅϵǾú´Ù¸é(´ÙÀ½ À妽º¿¡ ¿ä¼Ò°¡ ÀÖ´Ù´Â ÀǹÌ) nextElement() ¸Þ¼Òµå·Î ´ÙÀ½ ¿ä¼Ò¸¦ ²¨³»¼ »ç¿ëÇÏ¸é µÇ´Â °ÍÀÌ´Ù.
java.util.StringTokenizer Ŭ·¡½º°¡ Enumeration ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖ´Ù. µû¶ó¼ StringTokenizer Ŭ·¡½º°¡ Á¦°øÇÏ´Â ¸Þ¼Òµåµé Áß¿¡¼ Enumeration ¿¡¼ Á¤ÀÇÇÑ 2°³ÀÇ ¸Þ¼Òµå°¡ Á¦°øµÇ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¾Æ·¡ÀÇ ÄÚµå´Â Iterator ÀÎÅÍÆäÀ̽º´Ù.
|
package
java.util; |
Enumeration °úÀÇ Â÷ÀÌÁ¡Àº ´ÜÁö remove() ¸Þ¼Òµå°¡ Ãß°¡µÈ °Í »ÓÀÌ´Ù. hasNext() ¿Í next() ¸Þ¼Òµå´Â À̸§¸¸ ¾à°£ ´Ù¸¦ »Ó Enumeration ÀÎÅÍÆäÀ̽ºÀÇ hasMoreElements() ¿Í nextElement() ¿Í Á¤È®È÷ ÀÏÄ¡ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù.
±×·³ ¿Ö Enumeration ´ë½Å Iterator ¸¦ Java 2¿¡¼ Ãß°¡Çؼ »ç¿ëÇÒ±î? ±×°ÍÀº Enumeration ÀÎÅÍÆäÀ̽º´Â ÁýÇÕ ³»¿¡¼ ¿ä¼Ò¸¦ Á¦°ÅÇÒ ¹æ¹ýÀÌ ¾ø±â ¶§¹®ÀÌ´Ù. ±×°ÍÀ» º¸¿ÏÇϱâ À§ÇØ ³ª¿Â °ÍÀÌ Iterator ÀÎÅÍÆäÀ̽º´Ù.
3. J2SDK1.5 ¿¡¼ Ãß°¡µÉ auto-boxing °ú generic
¡¡
4. ÀÚÁÖ »ç¿ëµÇ´Â Ä÷º¼Ç °´Ã¼µéÀÇ ÆÛÆ÷¸Õ½º Ç¥
4-1. Set °´Ã¼
| ¡¡ | µ¿±âÈ | ¼³¸í |
| HashSet | no | °¡Àå ºü¸¥ ÁýÇÕ. HashMap º¸´Ù ´À¸®Áö¸¸ Set ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖ´Ù. HashMap Àº Set ÀÌ ¾Æ´Ï¶ó Map ÀÓ. |
| TreeSet | no | HashSetº¸´Ù ´À¸®´Ù. Â÷·Ê´ë·Î ۸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. (۰¡ Á¤·ÄµÊ) |
4-2. Map °´Ã¼
| ¡¡ | µ¿±âÈ | ¼³¸í |
| HashMap | no | °¡Àå ºü¸¥ ¸ÅÇÎ. |
| Hashtable | yes | HashMap º¸´Ù ´À¸®Áö¸¸ µ¿±âÈÇÑ HashMap º¸´Ù ºü¸£´Ù. |
| TreeMap | no | Hashtable °ú HashMap º¸´Ù ´À¸®´Ù. Â÷·Ê´ë·Î ۸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. (۰¡ Á¤·ÄµÊ) |
4-3. List °´Ã¼
| ¡¡ | µ¿±âÈ | ¼³¸í |
| ArrayList | no | °¡Àå ºü¸¥ ¸®½ºÆ®. |
| LinkedList | no | ´Ù¸¥ ¸®½ºÆ®º¸´Ù ´À¸®Áö¸¸ Å¥·Î ÀÌ¿ëÇßÀ» °æ¿ì ´õ ºü¸¦ ¼öµµ ÀÖ´Ù. ´À¸° ÀÌÀ¯´Â ArrayList ³ª Vector, Stack °ú ´Þ¸® array °è¿ÀÌ ¾Æ´Ï±â ¶§¹®. |
| Vector | yes | ArrayList º¸´Ù ´À¸®Áö¸¸ µ¿±âÈÇÑ ArrayList º¸´Ù ºü¸£´Ù. |
| Stack | yes | Vector ¿Í µ¿ÀÏÇÑ ¼Óµµ. LIFO Å¥ ±â´ÉÀ» Á¦°øÇÑ´Ù. |
ÇÊÀÚ»ý°¢ :: HashMap, ArrayList ¿¡ µ¿±âȸ¦ °É¾î »ç¿ëÇÏ´Â°Í º¸´Ù µ¿±âÈµÈ Hashtable, Vector ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ºü¸¥°ÍÀ¸·Î ¹Ì·ç¾î ÁüÀÛÄÁµ¥ Hashtable, Vector ÀÇ °æ¿ì¿¡´Â µ¿±âȰ¡ µÇ¾î ÀÖ´Â ³»ºÎ ¸Þ¼ÒµåµéÀÌ JIT ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ÃÖÀûÈ µÇ´Â°Í °°À½.
5. È¿À²ÀûÀÎ Ä÷º¼Ç °´Ã¼µéÀÇ »ç¿ë
*** Vector-Hashtable
vs
ArrayList-HashMap ***
º¸Åë
ÀϹÝÀûÀ¸·Î Vector ¿Í Hashtable
À» ÁÖ·Î »ç¿ëÇϰí
ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ Ä÷º¼Ç °´Ã¼µéÀº
¸ðµç ¸Þ¼Òµå°¡ synchronized µÇ¾î Àֱ⠶§¹®¿¡
µ¿½Ã¿¡ ¿©·¯ ½º·¹µå°¡ Á¢±Ù ÇÒ ¼ö ¾ø´Ù.
¹Ý¸í µ¿ÀÏÇÑ ±â´ÉÀ» Çϴµ¥µµ ºÒ±¸Çϰí ArrayList ¿Í HashMap Àº ¸Þ¼Òµå°¡ synchronized ·Î µÇ¾îÀÖÁö ¾Ê¾Æ¼ ½º·¹µåµéÀÌ
ÇØ´ç °´Ã¼¿¡
µ¿½ÃÁ¢±ÙÀÌ °¡´ÉÇÏ´Ù.
ÀºÇà¿¡¼ Çö±Ý ÀÔÃâ±Ý¿¡ °ü·ÃµÈ°Íó·³ ¹Ýµå½Ã ¹Ì¼ÇÅ©¸®Æ¼ÄÃÇÑ ·ÎÁ÷ÀÌ ÇÊ¿äÇÑ °÷¿¡¼±
Vector¿Í
HashtableÀ»
»ç¿ëÇÏ´Â°Ô ¹Ù¶÷Á÷ÇÏ°í ´ç¿¬ÇÏÁö¸¸
ÇÊÀÚ´Â Ãʺ¸ ºÐµéÀÌ
ÇÁ·Î±×·¡¹ÖÇÑ
Äڵ忡¼ ¸ÖƼ½º·¹µå Á¢±ÙÀ» ÇØµµ ¹«¹æÇѵ¥µµ ºÒ±¸Çϰí
¸ðµÎ Vector
¾Æ´Ï¸é
HashtableÀ»
»ç¿ëÇÏ´Â °ÍÀ»
¸¹ÀÌ
ºÁ¿Ô´Ù.
ÀÌ°Ç Æ¯È÷³ª jsp ó·³ ½Ã°£À» ´ÙÅõ´Â ÇÁ·Î±×·¥¿¡¼± Ä¡¸íŸ´Ù.
µ¿±âȰ¡ ÇÊ¿äÇÑÁö ¾Æ´ÑÁö¸¦ Àß ÆÇ´ÜÇØ¼ Á¤È®È÷ ÇÊ¿äÇÑ °÷¿¡¸¸ Vector³ª
HashtableÀ»
»ç¿ëÇÏ°í ±× ÀÌ¿ÜÀÇ ºÎºÐ¿¡¼± ArrayList ³ª
HashMap À» »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù.
ÀÌ¹Ì ´Ù ¾Æ´Â ¾ê±â¶ó°í ÇϽÇÁöµµ ¸ð¸£°ÚÁö¸¸ ¸ð¸£½Ã´Â ºÐµéÀÌ ³Ê¹« ¸¹¾Æ¼ ´Ù½Ã Çѹø ¾ð±ÞÇØºÃ´Ù.
ÇÊÀÚÀÇ °æ¿ì¿¡´Â È¿À²À» Á» ´õ ³ôÀ̱â À§ÇØ µ¿±âȰ¡
ÇÊ¿äÇÑ ºÎºÐµµ ArrayList ³ª HashMap ¿¡´Ù°¡ ¶ôÀ» °É¾î¼ ¸ÖƼ½º·¹µåÀÇ ÆóÇØ¸¦ ÇÇÇØ°¡´Â ¹æ½ÄÀ» »ç¿ëÇϰí ÀÖ´Ù.
¸ðµç °æ¿ì¿¡ ÀÌ·¸°Ô ÇÑ´Ù´Â °ÍÀº ¾Æ´Ï°í ¿¹¸¦ µé¾î µ¥ÀÌÅ͸¦ ³Ö´Â
ºÎºÐÀº ¸ÖƼ½º·¹µå Á¢±ÙÀÌ Çã¿ëµÇÁö¸¸ µ¥ÀÌÅ͸¦ ²¨³½ ÈÄ »èÁ¦ÇØ¾ß ÇÏ´Â ºÎºÐÀº µ¿±âȰ¡ ÇÊ¿äÇÏ´Ù°í
°¡Á¤ÇßÀ» ¶§ µ¿±âȰ¡ ÇÊ¿äÇÑ "µ¥ÀÌÅ͸¦ ²¨³½ ÈÄ »èÁ¦" Çϴºκп¡¸¸ ¶ôÀ» °É¾î¼ µ¿±âÈ ºí·°À» ÃÖ¼ÒȽÃÄѼ Á» ´õ È¿À²À» °¡Á®°£´Ù´Â °ÍÀÌ´Ù.
µ¥ÀÌÅ͸¦ Ä÷º¼Ç °´Ã¼¿¡ ³Ö°í(put) °¡Á®¿À°í(get)
»èÁ¦ÇÏ´Â(remove) µîÀÇ ¸ðµç ºÎºÐ¿¡ µ¿±âȰ¡
ÇÊ¿äÇÏ´Ù¸é ´ç¿¬È÷ ±×³É ÀÌ¹Ì ±×·± ¿ëµµ·Î ¸¸µé¾îÁø Vector³ª
Hashtable À» »ç¿ëÇÏ´Â °ÍÀÌ ÆíÇϰí
¶Ç ÀÌ·¸°Ô »ç¿ë ÇÏ´Â °ÍÀÌ ArrayList
³ª
HashMap ÀÇ ¸ðµç ¸Þ¼Òµå¿¡ ¶ôÀ» °É¾î »ç¿ëÇÏ´Â °Íº¸´Ù
´õ ºü¸£´Ù.
6. ¾Æ½¬¿òÀ» ³²±ää °Á¸¦ ¸¶¹«¸®Çϸç
ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â ¸Å³â ÀÚ¹ÙÀÇ °¡Àå ÈǸ¢ÇÑ ¶óÀ̺귯¸®·Î ¼±Á¤µÇ´Â ÆÄÆ®´Ù. ±×¸¸Å ¼³°èÀûÀÎ Ãø¸é¿¡¼³ª ±¸ÇöÀûÀÎ Ãø¸é¿¡¼ ¹è¿ï °ÍÀÌ ¸¹Àº ºÎºÐÀÌ´Ù. ÇÊÀÚ´Â Áö±Ý±îÁö ¹Ù·Î ÀÌ ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇØ ¼³¸íÀ» Çß´Ù. ÇÏÁö¸¸ ¾Æ½¬¿òÀÌ ³²´Â´Ù. ±× ÀÌÀ¯´Â ÇÊÀÚ°¡ "¹°°í±â Àâ´Â ¹ý"À» °¡¸£ÃÄ ÁØ °ÍÀÌ ¾Æ´Ï¶ó ¹°°í±â¸¦ Àâ¾Æ¼ ÁØ °ÍÀ̱⠶§¹®ÀÌ´Ù. Áï, ¾î¶»°Ô ÀÌ·± ÀڷᱸÁ¶(±¸Çö Ŭ·¡½ºµé)¸¦ ¸¸µéÁö¿¡ ´ëÇÑ °Á°¡ ¾Æ´Ï¶ó ´Ü¼øÈ÷ ¸¸µé¾îÁø ÀڷᱸÁ¶¸¦ ¾î¶»°Ô ÀÌ¿ëÇÏ´ÂÁö¿¡ ÃÊÁ¡À» ¸ÂÃç¼ ¼³¸íÇß´Ù´Â °ÍÀÌ´Ù.
ÇÊÀÚ°¡ µ¶Àںе鿡°Ô ÇѰ¡Áö ´çºÎ¸¦ ÇÑ´Ù¸é ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â api ¸¦ ´Ü¼øÈ÷ ÀÌ¿ëÇϱ⠺¸´Ù´Â Á÷Á¢ ¸¸µé¾î¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» Ű¿ì¶ó´Â °ÍÀÌ´Ù. ±×°Ô ÁøÁ¤ âÁ¶ÀûÀÎ ±×¸®°í ÇÁ·ÎÆä¼Å³ÎÇÑ °³¹ßÀÚ°¡ µÇ±â À§ÇÑ ±æÀ̶ó°í ÇÊÀÚ´Â »ý°¢ÇÑ´Ù. µû¶ó¼ ¿ì¼± µ¶ÀںеéÀº Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©ÀÇ ±¸Çö Ŭ·¡½ºµéÀÌ ¾î¶»°Ô ¸¸µé¾îÁ³´ÂÁö¸¦ Á÷Á¢ J2SDK Æú´õ ¾ÈÀÇ src.zip ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î¼ ºÐ¼®ÇغÃÀ¸¸é ÇÑ´Ù. ±×¸®°í ³ª¸§´ë·Î Á÷Á¢ ±×·± ÀڷᱸÁ¶¸¦ ±¸ÇöÇϱâ À§ÇÑ ¹æ¹ýµéµµ »ý°¢Çغ¸°í °¡´ÉÇÏ´Ù¸é Á÷Á¢ ±¸ÇöÇØº¸¾ÒÀ¸¸é ÇÑ´Ù. ±×·³ ÀÌÁ¦ °áÄÚ ÂªÁö ¾Ê¾Ò´ø Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ© °Á¸¦ ¸¶¹«¸®ÇϰڴÙ.
¡¡
¡¡