태그 보관물: Collection

Java Collection

Collection은 레퍼런스 타입들을 유지하기 위한 메카니즘이다.
Java는 대충 아래의 클래스들로 구성이 되어 있습니다. 추가적으로 java.util.concurrent 패키지에 확장 Collection 클래스들도 있습니다.

Collection : 가장 상위 인터페이스
 + Set : 중복요소가 없는 컬렉션으로, 하위 인터페이스로 SortedSet이 있습니다.
 + List : 순서가 있는 컬렉션으로, 인덱스로 위치를 지정하여 값을 찾을 수 있습니다.
 + Queue : FIFO의 구조로 객체를 유지하는 컬렉션으로, 하위 인터페이스는 BlockingQueue가 있습니다.
 + Map : 키를 값에 매핑 하는 컬렉션으로, 중복키를 허용하지 않는다. 하위 인터페이스들은 ConcurrentMap, SortedMap이 있습니다.

Set
– AbstractSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet

List
– AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

Queue
– AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

Map
– AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap

Iterator보다 빠르게 Collection의 오브젝트 처리

Collection에 들어있는 오브젝트를 가져오기 위해서 일반적으로 Iterator 패턴을 구현한 Iterator 클래스를 많이 사용합니다. 하지만, Iterator클래스의 next()를 통해서 오브젝트를 가져오고, hasNext()를 통해서 오브젝트의 마지막을 체크하기 때문에, List 타입의 Collection에서는 get()를 사용하는 것이 더 빠르게 동작을 합니다.


ex) Iterator 클래스 사용예


Iterator iterator = array.iterator();
while (iterator.hasNext()) {
 Object object = iterator.next();
}

ex) List 타입의 get() 사용 예


int size = array.size();
for (int i=0; i<size ; i++) {
 Object object = array.get(i);
}