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에 있는 데이터를 검색해서 사용하는 용도로 많이 쓰인다..
'개발관련 > Java' 카테고리의 다른 글
JavaDoc 주석 표기법 (0) | 2021.03.24 |
---|---|
Console창에서 Javac로 하위폴더 java파일 모두 컴파일 하기 (0) | 2021.03.23 |
java 명령어 jar파일 실행지점 main클래스 지정 (0) | 2021.03.23 |
자주쓰는 jad 명령어 옵션 (0) | 2021.03.23 |
Java 기본 Logger로 파일로그 출력하기 (예제) (0) | 2016.04.15 |