Collection Framework

¡¡

¸¸µçÀÌ: ¼ÛÁöÈÆ
¼Ò¼Ó: 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 À» »ìÆìº¸µµ·Ï ÇÏÀÚ. °¢ ÀÎÅÍÆäÀ̽ºµé¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ¾Æ·¡ ºÎºÐ¿¡¼­ Çϵµ·Ï ÇϰڴÙ.

Top

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

ÀÌÁ¦ ÇØ´ç ÀÎÅÍÆäÀ̽º¿Í ±× ±¸Çö Ŭ·¡½ºµéÀÇ Æ¯Â¡ÀÌ ¾î¶² °ÍÀÌ°í ¾î¶»°Ô »ç¿ëµÇ´Â¸¦ ÀÚ¼¼È÷ »ìÆìº¸µµ·Ï ÇϰڴÙ.

Top

2-1. Collection ÀÎÅÍÆäÀ̽º

¿ì¼± ¸ÕÀú 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
        boolean containsAll(Collection c);
        boolean addAll(Collection c);
        boolean removeAll(Collection c);
        boolean retainAll(Collection c);
        void clear();

        // Comparison and hashing
        boolean equals(Object o);
        int hashCode();
    }
¡¡

À§ Äڵ忡¼­ ÁÖ¼®À¸·Î ¼³¸íµÈ ºÎºÐ¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ ±â´É¿¡ µû¶ó 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)À» À§ÇÑ ¿ÀÆÛ·¹À̼ǵéÀ» Á¤ÀÇÇÏ´Â ¸Þ¼Òµå´Ù. ÀÚÁÖ ¾²ÀÌÁö ¾ÊÀ¸¹Ç·Î º°µµÀÇ ¾ð±ÞÀº ÇÏÁö ¾Ê°Ú´Ù.

Top

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
        boolean containsAll(Collection c);
        boolean addAll(Collection c);
        boolean removeAll(Collection c);
        boolean retainAll(Collection c);
        void clear();

        // Comparison and hashing
        boolean equals(Object o);
        int hashCode();
    }
¡¡

À§ Äڵ带 º¸¸é Collection °ú µ¿ÀÏÇÑ ¸Þ¼Òµå¸¸À» Á¦°øÇØÁÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ´ÜÁö ±¸Çö Ŭ·¡½º ³»ºÎ¿¡ equals(Object o) ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­ Áߺ¹À» Çã¿ëÇÏÁö ¾Êµµ·Ï üũÇÏ´Â ±â´ÉÀÌ ´õÇØÁ® ÀÖ´Ù.

±×·³ ÀÌÁ¦ºÎÅÍ Set À» ±¸ÇöÇÑ Å¬·¡½ºµéÀ» »ìÆìº¸µµ·Ï ÇϰڴÙ.

2-2-1. HashSet

¡¡

2-2-2. LinkedHashSet(1.4¿¡¼­ Ãß°¡)

¡¡

2-2-3. TreeSet

¡¡

Top

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
        boolean containsAll(Collection c);
        boolean addAll(Collection c);
        boolean addAll(int index, Collection c);
        boolean removeAll(Collection c);
        boolean retainAll(Collection c);
        void clear();

        // Comparison and hashing
        boolean equals(Object o);
        int hashCode();

        // Positional Access Operations
        Object get(int index);
       Object set(int index, Object element);
       void add(int index, Object element);
       Object remove(int index);

        // Search Operations
        int indexOf(Object o);
       int lastIndexOf(Object o);


        // List Iterators
        ListIterator listIterator();
       ListIterator listIterator(int index);


        // View
        List subList(int fromIndex, int toIndex);
    }
¡¡

Collection ÀÎÅÍÆäÀ̽º¿¡¼­ Á¦°øÇØÁÖ´ø ¸Þ¼Òµåµé¿¡ List ÀÎÅÍÆäÀ̽ºÀÇ Æ¯Â¡ÀΠƯÁ¤ À§Ä¡ÀÇ ¿ä¼Ò¸¦ ã°Å³ª ƯÁ¤ À§Ä¡¿¡ ¿ä¼Ò¸¦ Ãß°¡ÇÏ´Â µîÀÇ ¸Þ¼ÒµåµéÀÌ Ãß°¡µÇ¾ú´Ù. ¸Þ¼Òµå À̸§ÀÌ ¿ö³« ÀϰüµÇ°í ¸íÈ®ÇÏ°Ô Àß Áö¾îÁ® Àֱ⠶§¹®¿¡(ÇÊÀÚ°¡ ÀÚ¹Ù¸¦ ÁÁ¾ÆÇÏ´Â ÀÌÀ¯ Áß Çϳª) ¸Þ¼Òµå À̸§¸¸À¸·Îµµ ´ë°­ ¾î¶² ¿ªÇÒÀ» ÇÏ´ÂÁö ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. List ÀÎÅÍÆäÀ̽º¿¡¼­ Ãß°¡µÈ ¸Þ¼ÒµåµéÀº Bold ¸¦ ÁÖ¾î Ç¥ÇöÇØ³ù´Ù.

2-3-1. ArrayList

¡¡

2-3-2. LinkedList

¡¡

2-3-3. Vector

¡¡

2-3-4. Stack

¡¡

Top

2-4. Map ÀÎÅÍÆäÀ̽º¿Í ±¸Çö Ŭ·¡½ºµé

Map ÀÎÅÍÆäÀ̽º´Â Ű(key)¸¦ °ª(value)¿¡ ¸ÅÇÎ(mapping) ÇÑ´Ù. ¶ÇÇÑ MapÀº µ¿ÀÏÇÑ Å°¸¦ º¹¼ö µî·ÏÇÒ ¼ö ¾ø°í °¢ Ű´Â 1 °³ÀÇ °ª¹Û¿¡ ¸ÅÇÎ ÇÒ ¼ö ¾ø´Ù. Áï, ÇϳªÀÇ Å° °ª¿¡ ´ëÀÀÇÏ´Â ÇϳªÀÇ °ªÀ» °®´Â ÀڷᱸÁ¶´Ù.

    package java.util;

    public interface Map {
         // Query Operations
        int size();
        boolean isEmpty();
         boolean containsKey(Object key);
        boolean containsValue(Object value);
        Object get(Object key);

         // Modification Operations
        Object put(Object key, Object value);
        Object remove(Object key);

        // Bulk Modification Operations
        void putAll(Map t);
         void clear();

         // Views
        Set keySet();
        Collection values();
        Set entrySet();
        interface Entry {
            Object getKey();
            Object getValue();
            Object setValue(Object value);
            boolean equals(Object o);
             int hashCode();
        }

         // Comparison and hashing
        boolean equals(Object o);
        int hashCode();
    }
¡¡

// ¼³¸í

2-4-1. HashMap

¡¡

2-4-2. LinkedHashMap(1.4¿¡¼­ Ãß°¡)

¡¡

2-4-3. IdentityHashMap(1.4¿¡¼­ Ãß°¡)

¡¡

2-4-4. WeakHashMap

¡¡

2-4-5. Hashtable

¡¡

2-4-6. TreeMap

¡¡

Top

2-5. Enumeration ¿Í Iterator ÀÎÅÍÆäÀ̽º

Collection Framework ¿¡´Â Enumeration ¿Í Iterator ¶ó´Â ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Ù. »çÀüÀûÀÎ Àǹ̷δ ¹Ýº¹, ¼øÈ¯À̶ó´Â ¶æÀ» Áö´Ï°í ÀÖ´Ù. ¾î¶² °´Ã¼µéÀÇ ¸ðÀÓÀÌ ÀÖÀ» ¶§(Collection °è¿­ ±¸Çö Ŭ·¡½ºµé, Collection ÀÎÅÍÆäÀ̽º¿¡ iterator() ¸Þ¼Òµå°¡ ÀÖ¾úÀ½À» ±â¾ïÇØ¶ó) ÀÌ °´Ã¼µéÀ» ¾î¶² ¼ø¼­¿¡ ÀÇÇØ¼­ Çϳª¾¿ ²¨³» ¾²±â À§ÇÑ ÀÎÅÍÆäÀ̽º¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿ø·¡ Java 2 ÀÌÀü´Â Enumeration À̶ó´Â ÀÎÅÍÆäÀ̽º°¡ ¸¹ÀÌ »ç¿ëµÇ¾úÁö¸¸ ÃÖ±Ù¿¡´Â Iterator ÀÎÅÍÆäÀ̽º°¡ ´õ ¸¹ÀÌ »ç¿ëµÈ´Ù. ±× ÀÌÀ¯´Â °¢ ÀÎÅÍÆäÀ̽º¸¦ »ìÆìº¸¸ç ¾Ë¾Æº¸±â·Î ÇϰڴÙ.

2-5-1. Enumeration

¾Æ·¡ÀÇ Enumeration ÀÎÅÍÆäÀ̽ºÀÇ Äڵ带 º¸ÀÚ.

    package java.util;

    public interface Enumeration {
         boolean hasMoreElements();
        Object nextElement();
    }
¡¡

ÀÌ ÀÎÅÍÆäÀ̽º´Â ´ÜÁö µÎ°³ÀÇ ¸Þ¼Òµå¸¸À» Á¦°øÇÑ´Ù. ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ëÀº »ó´çÈ÷ °£´ÜÇÏ´Ù. hasMoreElements() ¸Þ¼Òµå·Î ÀÎÅÍÆäÀ̽º ¾È¿¡ ´ÙÀ½ ¿ä¼Ò°¡ ÀÖ´ÂÁö¸¦ ÁúÀÇÇÑ´Ù. ¸¸¾à true °¡ ¸®ÅϵǾú´Ù¸é(´ÙÀ½ À妽º¿¡ ¿ä¼Ò°¡ ÀÖ´Ù´Â ÀǹÌ) nextElement() ¸Þ¼Òµå·Î ´ÙÀ½ ¿ä¼Ò¸¦ ²¨³»¼­ »ç¿ëÇÏ¸é µÇ´Â °ÍÀÌ´Ù.

java.util.StringTokenizer Ŭ·¡½º°¡ Enumeration ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖ´Ù. µû¶ó¼­ StringTokenizer Ŭ·¡½º°¡ Á¦°øÇÏ´Â ¸Þ¼Òµåµé Áß¿¡¼­ Enumeration ¿¡¼­ Á¤ÀÇÇÑ 2°³ÀÇ ¸Þ¼Òµå°¡ Á¦°øµÇ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

2-5-2. Iterator

¾Æ·¡ÀÇ ÄÚµå´Â Iterator ÀÎÅÍÆäÀ̽º´Ù.

    package java.util;

    public interface Iterator {
         boolean hasNext();
        Object next();
        void remove();
    }
¡¡

Enumeration °úÀÇ Â÷ÀÌÁ¡Àº ´ÜÁö remove() ¸Þ¼Òµå°¡ Ãß°¡µÈ °Í »ÓÀÌ´Ù. hasNext() ¿Í next() ¸Þ¼Òµå´Â À̸§¸¸ ¾à°£ ´Ù¸¦ »Ó Enumeration ÀÎÅÍÆäÀ̽ºÀÇ hasMoreElements() ¿Í nextElement() ¿Í Á¤È®È÷ ÀÏÄ¡ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù.

±×·³ ¿Ö Enumeration ´ë½Å Iterator ¸¦ Java 2¿¡¼­ Ãß°¡Çؼ­ »ç¿ëÇÒ±î? ±×°ÍÀº Enumeration ÀÎÅÍÆäÀ̽º´Â ÁýÇÕ ³»¿¡¼­ ¿ä¼Ò¸¦ Á¦°ÅÇÒ ¹æ¹ýÀÌ ¾ø±â ¶§¹®ÀÌ´Ù. ±×°ÍÀ» º¸¿ÏÇϱâ À§ÇØ ³ª¿Â °ÍÀÌ Iterator ÀÎÅÍÆäÀ̽º´Ù.

Top

3. J2SDK1.5 ¿¡¼­ Ãß°¡µÉ auto-boxing °ú generic

¡¡

Top

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 ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ÃÖÀûÈ­ µÇ´Â°Í °°À½.

Top

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 ÀÇ ¸ðµç ¸Þ¼Òµå¿¡ ¶ôÀ» °É¾î »ç¿ëÇÏ´Â °Íº¸´Ù ´õ ºü¸£´Ù.

Top

6. ¾Æ½¬¿òÀ» ³²±ää °­Á¸¦ ¸¶¹«¸®Çϸç

ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â ¸Å³â ÀÚ¹ÙÀÇ °¡Àå ÈǸ¢ÇÑ ¶óÀ̺귯¸®·Î ¼±Á¤µÇ´Â ÆÄÆ®´Ù. ±×¸¸Å­ ¼³°èÀûÀÎ Ãø¸é¿¡¼­³ª ±¸ÇöÀûÀÎ Ãø¸é¿¡¼­ ¹è¿ï °ÍÀÌ ¸¹Àº ºÎºÐÀÌ´Ù. ÇÊÀÚ´Â Áö±Ý±îÁö ¹Ù·Î ÀÌ ÀÚ¹ÙÀÇ Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇØ ¼³¸íÀ» Çß´Ù. ÇÏÁö¸¸ ¾Æ½¬¿òÀÌ ³²´Â´Ù. ±× ÀÌÀ¯´Â ÇÊÀÚ°¡ "¹°°í±â Àâ´Â ¹ý"À» °¡¸£ÃÄ ÁØ °ÍÀÌ ¾Æ´Ï¶ó ¹°°í±â¸¦ Àâ¾Æ¼­ ÁØ °ÍÀ̱⠶§¹®ÀÌ´Ù. Áï, ¾î¶»°Ô ÀÌ·± ÀڷᱸÁ¶(±¸Çö Ŭ·¡½ºµé)¸¦ ¸¸µéÁö¿¡ ´ëÇÑ °­Á°¡ ¾Æ´Ï¶ó ´Ü¼øÈ÷ ¸¸µé¾îÁø ÀڷᱸÁ¶¸¦ ¾î¶»°Ô ÀÌ¿ëÇÏ´ÂÁö¿¡ ÃÊÁ¡À» ¸ÂÃç¼­ ¼³¸íÇß´Ù´Â °ÍÀÌ´Ù.

ÇÊÀÚ°¡ µ¶Àںе鿡°Ô ÇѰ¡Áö ´çºÎ¸¦ ÇÑ´Ù¸é ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â api ¸¦ ´Ü¼øÈ÷ ÀÌ¿ëÇϱ⠺¸´Ù´Â Á÷Á¢ ¸¸µé¾î¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» Ű¿ì¶ó´Â °ÍÀÌ´Ù. ±×°Ô ÁøÁ¤ âÁ¶ÀûÀÎ ±×¸®°í ÇÁ·ÎÆä¼Å³ÎÇÑ °³¹ßÀÚ°¡ µÇ±â À§ÇÑ ±æÀ̶ó°í ÇÊÀÚ´Â »ý°¢ÇÑ´Ù. µû¶ó¼­ ¿ì¼± µ¶ÀںеéÀº Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ©ÀÇ ±¸Çö Ŭ·¡½ºµéÀÌ ¾î¶»°Ô ¸¸µé¾îÁ³´ÂÁö¸¦ Á÷Á¢ J2SDK Æú´õ ¾ÈÀÇ src.zip ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î¼­ ºÐ¼®ÇغÃÀ¸¸é ÇÑ´Ù. ±×¸®°í ³ª¸§´ë·Î Á÷Á¢ ±×·± ÀڷᱸÁ¶¸¦ ±¸ÇöÇϱâ À§ÇÑ ¹æ¹ýµéµµ »ý°¢Çغ¸°í °¡´ÉÇÏ´Ù¸é Á÷Á¢ ±¸ÇöÇØº¸¾ÒÀ¸¸é ÇÑ´Ù. ±×·³ ÀÌÁ¦ °áÄÚ ÂªÁö ¾Ê¾Ò´ø Ä÷º¼Ç ÇÁ·¹ÀÓ¿öÅ© °­Á¸¦ ¸¶¹«¸®ÇϰڴÙ.

Top

¡¡

¡¡