[Java] 자바 컬렉션 클래스 - List, Set, Map의 개념 정리
컬렉션 클래스
- 여러 개의 주소를 보관할 때 사용하는 클래스이다.
- 사용 목적 :
배열의 문제는 인스턴스를 배열 크기 만큼만 저장할 수 있다는 것이다.
더 추가로 저장하고 싶다면, 새 배열을 만들어야 한다.
관리하기 너무 번거롭다.
자바에서 제공하는 컬렉션 클래스의 종류
1) List 계열
- null 값을 저장할 수 있다.
- 값을 중복 저장할 수 없다.
- 값을 넣는 순서대로 저장한다.
그래서 값을 꺼낼 때도 넣은 순서대로 꺼낼 수 있다.
- 값을 꺼낼 때 숫자 인덱스를 사용하여 꺼낸다.
- 예) ArrayList, LinkedList
2) set계열
- HashSet
- null 값을 저장할 수 있다.
- 값을 중복 저장할 수 없다.
이유 -> 집합이기 때문
- 값을 넣을 때 인스턴스의 해시값을 기준으로 저장하기 때문에
순서대로 저장되지 않는다.
그래서 값을 꺼낼 때도 순서대로 꺼낼 수 없다.
- 값을 꺼낼 때 숫자 인덱스로 꺼낼 수 없다.
- 예) HashSet
3) Map 계열
- 값을 저장할 때 key 개체의 해시 값(hash value)을 사용하여 저장한다.
- 값을 꺼낼 때도 key 객체의 해시 값을 사용하여 꺼낸다.
- 값을 중복 저장할 수 없다.
- 순서대로 저장하고 순서대로 꺼낼 수 없다.
- 보통 문자열 라벨을 사용하여 값을 저장하고 꺼낼 때 주로 사용한다.
- 예)
HashMap :
- key나 value로 null을 허용한다.
- 동기화를 지원하지 않는다.
=> 여러 스레드가 동시에 접근하여 값을 변경하는 것을 막지 않는다.
=> 데이터의 입출력 속도가 빠르다.
=> 대신 여러 스레드가 동시에 값을 바꿀 수 있기 때문에
멀티 스레드 상황에서 사용할 때 주의해야 한다.
Hashtable :
- key나 value로 null을 허용하지 않는다.
- 동기화를 지원한다.
=> 여러 스레드가 동시에 접근하더라도 그 중 한개의 스레드만이 접근할 수 있다.
=> 데이터의 입출력 속도가 느리다.
=> 대신 여러 스레드가 동시에 값을 바꿀 수 없기 때문에
멀티 스레드 상황에서 안전하게 사용할 수 있다.
아래 참조
2017/05/17 - [java] - [Java] 컬렉션 클래스 - ArrayList를 직접 만들어서 내부 구조를 이해해보자
2017/05/16 - [java] - [Java] 컬렉션 클래스 - HashSet
2017/05/16 - [java] - [Java] 컬렉션 - [Map] HashMap(java.util.HashMap)
'Programming > java' 카테고리의 다른 글
[Java] 상속과 super() 메서드 (0) | 2017.05.15 |
---|---|
[Java] final 명령어 (public static final ...) (0) | 2017.05.15 |
[Java] 랩퍼(wrapper) 클래스와 boxing / unboxing (2) | 2017.05.12 |
[Java] Object 클래스 - toString() 메서드의 재정의 예제 (0) | 2017.05.12 |
[Java] 오버라이딩 (overriding)과 super 키워드 (0) | 2017.05.12 |