개요
이번 글에서는 Java의 Java Collection Framework 중 List, Set, Map에 대해 이야기 해보려고 한다.
Java Collection Framework(JCF)
자바에서 기본적인 자료구조들을 한 곳에 모아 관리하고 편하게 사용하기 위해서 제공하는 것을 의미한다.
Java Collection Framework의 상속 구조는 크게 Collection(List, Set)과 Map으로 되어있다.
왜 사용할까?
개발을 하면서 많은 데이터를 처리하기 위해 배열과 같은 자료구조로만 개발을 하는 것은 힘들뿐더러 배열의 한계, 즉 크기가 고정되어 있다는 문제점이 큰 원인으로 자리 잡아 자료의 삽입, 삭제 등이 용이해지고 어떠한 자료형이라도 담을 수 있으며 크기가 자유롭게 늘어난다는 강점 가진 컬렉션 프레임워크를 사용하는 것이다.
List와 Set, Map의 특징
1. List
1.1. 순서가 있고 중복을 허용한다.
1.2. 크기가 동적이다.
1.3. 인덱스를 통한 원소 접근이 가능하다.
2. Set
2.1. 순서가 없고 중복을 허용하지 않는다.
2.2. 빠른 검색 속도를 가진다.
2.3. 중복 없는 데이터를 저장할 때 유용하다.
3. Map
3.1. Key와 Value의 한 쌍으로 이루어지는 데이터의 집합이다.
3.2. 순서는 유지하지 않으며, Key는 중복이 불가하나 Value는 중복을 허용한다.
3.3. 빠른 검색 속도를 가진다.
Collection Interface
1. List Interface
1.1. ArrayList - 단방향 포인터 구조로 검색이 빠르지만 LinkedList에 비해 삽입/삭제가 느리다.
1.2. LinkedList - 양방향 포인터 구조로 검색이 느리지만 ArrayList에 비해 삽입/삭제가 빠르다.
2. Set Interface
2.1. HashSet - 순서를 보장하지 않고 NULL 값을 허용하며 TreeSet에 비해 삽입/삭제가 빠르다.
2.2. LinkedHashSet - 입력된 순서를 보장하여 추가된 순서, 가장 최근에 접근한 순서대로 접근 이 가능하다.
2.3. TreeSet - 데이터들이 오름차순으로 정렬되고 삽입/삭제는 느리지만 검색이 빠르다.
3. Map Interface
3.1. HashMap - Key에 대한 중복이 없으며 순서를 보장하지 않고, Key와 Value 값으로 NULL 값을 허용하며 검색에 가장 뛰어난 성능을 가진다.
3.2. HashTable - Key와 Value 값으로 NULL 값을 허용하지 않는다.
3.3. LinkedHashMap - 입력된 순서를 보장한다.
3.4. TreeMap - 정렬된 순서로 키/값 쌍을 저장하므로 빠른 검색이 가능하고, 저장시 정렬(오름차순)을 하기 때문에 저장시간이 다소 오래 걸린다.
참조
1. https://hackersstudy.tistory.com/26
Java의 Collections (List, Set, Map) 이해
Java Collection Framework (JCF) : Java에서 데이터를 저장하는 기본적인 자료구조들을 한 곳에 모아 관리하고 편하게 사용하기 위해서 제공하는 것을 의미한다. 다음은 JCF의 상속 구조이며 사용 용도에
hackersstudy.tistory.com
2. https://cocoon1787.tistory.com/527
[자료구조] List, Map, Set 특징 정리
안녕하세요. 최근에 신입 개발자 면접에서 Map과 Set의 차이점이 무엇인지 질문을 받았었는데, 제대로 답변하지 못한 것 같아서 이번 기회에 확실히 개념과 특징, 차이점을 정리하기 위해 List, Map,
cocoon1787.tistory.com
'Java' 카테고리의 다른 글
[Java] Java에서 AES-256 사용하기 (0) | 2022.08.31 |
---|---|
[Java] Java - 비밀번호 유효성 체크 유틸 (0) | 2022.08.29 |
[Java] Java - System.lineSeparator() 매서드 (0) | 2022.08.25 |
[Java] String 클래스에 대하여 (0) | 2022.04.04 |
[Java] 변수의 타입 - 기본형(Primitive type)/참조형(Reference type) (0) | 2022.03.31 |