본문 바로가기

Language/Java

ArrayList와 HashMap의 차이점 (Java Collection)

1. Collection
List 계열 : AbstractList, ArrayList, LinkedList, Vector 
Map 계열 : AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, 
        RenderingHints, TreeMap, WeakHashMap 
Set계열 : AbstractSet, HashSet, LinkedHashSet, TreeSet 
 
Collection, List, Map,Set은 모두 구현되지 않은 interface
계열로 내려가 구현된 Class를 사용해서 정의 
ex) List a = new ArrayList();  
* 다형성(부모는 여러가지 자식의 형태로 나타날 수 있다).
List a = new List();
 * error : interface는 그 자체 생성자로 선언할 수 없다.

2. 계열들의 특징
Collection 의 자식들은 자신들만의 고유한 특징을 명확히 가진다.
List :  수집의 순서가 있으며, 동일한 데이터의 중복 입력이 가능.
     순차적으로 대량의 데이터를 억세스하거나 입력할때 유리한 방식.
Map : Key & Value의 형태로 입력이되며, 키값을 입력하면 해당하는 value값을 획득. 수집의 순서를 기억하지 않고, 동일한 데이터를 Key값으로 사용할 수 없다. 
( 동일 key값으로 다른 데이터의 입력 불가능 )
다건의 데이터에서 원하는 특정 데이터에 접근(검색)할 때 유리한 방식. 
Set : 중복데이터를 불허하는 것을 제외하고는 큰 특징이 없음.
입력되는 당시의 순서에는 따르지 않으나 순차적인 접근을 위해서는 Iterator로 접근하게됩니다.
 
3. 각 구현 class들의 차이
Map계열 
  HashMap은 데이터 입출력이 동기화되지 않고 처리속도가 빠름
  HashTable은 모든 입출력이 동기화(토근을 부여받아 순차적으로 객체에 접근)되며 
 처리속도는 다소 떨어지게됩니다.
List계열
  Vector가 synchronized(동기화) 되는 반면 
  ArrayList는 그렇지 않다.

4. ArrayList 와 HashTable(HashMap)의 차이점
ArrayList의 입력방식 
add(Object o), add(int index, Object o), set(int index, Object o)…etc
# 데이터를 검색하기 위해서는 처음부터 끝까지 돌거나 사용자가 index를 알아야함
index정보를 알고 있다면 ArrayList가 HashMap보다 빠름

HashMap의 입력방식
      pub(Object key, Object value)
      key 값을 Object로 갖고 있기에 자바에서 사용가능한 모든 클래스 가능
      (복잡한 값을 갖는 Object 도 키로 활용가능)
# 키 값을 이용해 바로 원하는 정보를 얻어낼 수 있기에 검색능력이 탁월하다.

용도의 차이점  
 ArrayList의 경우 단순히 데이터를 입력하고 데이터를 출력하는 용도로
 HashMap의 경우 데이터를 캐쉬해서 특정 key값으로 HashMap에 있는 데이터를 검색해서 사용하는 용도로 많이 쓰인다..

'Language > Java' 카테고리의 다른 글

Java Varargs (가변인자) 사용법  (1) 2014.02.27
Dom4j를 이용한 XML Parsing  (0) 2014.02.27
Java Garbage Collection  (0) 2014.02.27
Interface vs Abstract  (0) 2014.02.27
중첩 클래스(Nested Class) [자바 4대 중첩 클래스]  (3) 2014.02.27