일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MQ#MOM#메시지지향미들웨어#Kafka#ActiveMQ#rabbitMQ
- java
- Mysql #RDBMS #설치 #기동 #설정
- 클라우드#클라우드서비스#클라우드개념#IaaS#Paas#Saas
- 이펙티스자바
- JPA #생명주기
- MySQL 5.7 #MySQL 8.0 #차이점 #업그레이드
- abstract
- ssh #pem
- 모니터링 #k8s #prometheus #metricbeat #elasticsearch #logstash
- interface
- EKS란
- JDK1.8
- X.25
- cors #Authorization
- ssl #개인키 #공개키
- React#기초#JS#JavaScrip#개념
- 오라클#튜닝
- k8s
- docker #k8s #배포하기
- React
- WEB #HTTP #HTTPS #SSL #통신개념
- Vuejs#JavaScript#프레임워크#개요#개념
- non-locking
- REST#SOAP#API
- Oracle #ANSI #SQL #JOIN
- React #생명주기
- memory #리눅스 #자원관리
- SSH #공개키인증
- MQM #웹서버
- Today
- Total
개발노트
[JAVA] Collection 정리 본문
[JAVA] Java 컬렉션(Collection) 정리
■ Java Collections Framework(JCF)
Java에서 컬렉션(Collection)이란 데이터의 집합, 그룹을 의미하며
JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렌션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.
다음은 Java 컬렌션 프레임워크의 상속구조를 나타낸다.
Collection 인터페이스는 List, Set, Queue로 크게 3가지 상위 인터페이스로 분류할 수 있다.
그리고 여기에 Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.
■ Collection 인터페이스의 특징
인터페이스 |
구현클래스 |
특징 |
Set |
HashSet TreeSet |
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. |
List |
LinkedList Vector ArrayList |
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. |
Queue |
LinkedList PriorityQueue |
List와 유사 |
Map |
Hashtable HashMap TreeMap |
키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로, 순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다. |
List 컬렉션
- 컬렉션 프레임워크를 상속받고 있는 List컬렉션은 List 컬렉션은 객체를 일렬로 늘어놓은 구조를 가지고 있다. List 컬렉션은 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공한다. (인덱스에는 데이터가 저장되어 있는 참조 값을 가지고 있다.)
List컬렉션은 객체 자체를 저장하는 것이 아니라 위와 같이 객체의 번지를 참조한다. 동일한 객체를 중복 저장할 수 있는데 이 경우 동일한 번지가 참조된다. null도 저장이 가능한데 이 경우 해당 인덱스는 객체를 참조하지 않는다. List 컬렉션을 구현하는 대표적인 클래스들은 ArrayList, LinkedList, Vector가 있으며 이 3가지 클래스는 List 인터페이스를 같이 상속하고 있으므로 공통적으로 사용할 수 있는 메서드들이 많다.
Set 컬렉션
- 앞서 살펴본 List 컬렉션은 선형구조를 가지고 있으므로 추가한 순서대로 저장이 되어 순서를 유지하였지만 Set컬렉션의 경우에는 저장 순서가 유지되지 않는다. 그렇기에 Set컬렉션은 순서 자체가 없으므로 인덱스로 객체를 검색해서 가져오는 get(index) 메서드도 존재하지 않는다. 대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다. 반복자(Iterator)는 iterator() 메서드를 호출하면 얻을 수 있다.
또한 Set은 객체를 중복해서 저장할 수 없고 하나의 중복 저장이 안 되기에 null값도 하나만 저장할 수 있다. Set컬렉션은 수학의 집합에 비유될 수 있다. 집합은 순서와 상관없고 중복이 허용되지 않기 때문이다. Set 컬렉션을 구현하는 대표적인 클래스들은 HashSet과 TreeSet이 있다. 이 2가지 클래스는 Set 인터페이스를 같이 상속하고 있으므로 공통적으로 사용할 수 있는 메서드들이 존재한다.
Map컬렉션
- Map 컬렉션은 키(key)와 값(value)으로 구성된 객체를 저장하는 구조를 가지고 있는 자료구조이다. 키는 중복으로 저장할 수 없고 값은 중복으로 저장할 수 있으며 중복된 key값이 들어온다면 기존의 값은 없어지고 새로운 값으로 대치된다.
Map은 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다. Map은 사물함을 연상할 수 있다. 사물함도 사물함 번호가 있고 사물함 내부에 물건들이 있다. 사물함의 번호가 key가 되는 것이고 내부의 물건이 value가 되는 것이다. 자바의 맵(Map)은 이러한 대응관계를 쉽게 표현할 수 있게 해 주는 자료형이다. Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. 맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다. 따라서 Map 컬렉션은 키(key)로 데이터를 관리한다. Map 컬렉션을 구현하는 대표적인 클래스들은 HashMap, Hashtable, LinkedHashMap, TreeMap 등이 있다. 이 클래스들은 Map 인터페이스를 같이 상속하고 있으므로 공통적으로 사용할 수 있는 메서드들이 존재한다.
[ 별첨 ]
컬렉션 클래스의 특징
컬렉션 클래스 (Collection Class) |
순서 (Ordering) |
랜덤 액세스 (RandomAccess) |
키-값 (Key-Value) |
중복 요소 (Duplicate |
널 요소 (NullElement) |
스레드 안전 (Thread |
ArrayList |
O |
O |
|
O |
O |
|
LinkedList |
O |
|
|
O |
O |
|
Vector |
O |
O |
|
O |
O |
O |
|
O |
|
|
O |
O |
O |
HashSet |
|
|
|
|
O |
|
TreeSet |
O |
|
|
|
|
|
HashMap |
|
O |
O |
|
O |
|
TreeMap |
O |
O |
O |
|
|
|
|
|
O |
O |
|
O |
|
|
|
O |
O |
|
O |
|
CopyOnWriteArrayList |
O |
O |
|
O |
O |
O |
CopyOnWriteArraySet |
|
|
|
|
O |
O |
ConcurrentHashMap |
|
O |
O |
|
|
O |
*각각의 장단점 관련 참조 링크 : smujihoon.tistory.com/155
'Java' 카테고리의 다른 글
Abstract Class vs Interface [특징 및 차이점] (0) | 2024.06.20 |
---|---|
Lombok의 @Builder가 Java Record의 필드를 감지하지 못할때. (0) | 2024.06.19 |
스트림과 버퍼의 차이점 및 실제 사용 사례 (0) | 2024.06.16 |
[Java] 열거체 enum 클래스 (0) | 2021.01.20 |
동일성(identity, ==)과 동등성(equality, equals()) (0) | 2021.01.18 |