02.자바 컬렉션
자바 컬렉션의 대표 인터페이스는?
Java에서 Collection 이란 데이터의 집합, 그룹을 의미하며
JCF(Java Collections Framework)는 객체들을 한 곳에 모아 관리하고, 편하게 사용하기 위해 제공되는 환경이고,
데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.
- Collection에는 List, Set, Queue로 크게 구분되며 Map은 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.
※ 왜 Collection을 사용하는 것일까?
- 그 이유는 다수의 Data(데이터)를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure(자료구조)를 직접 구현하지 않고 편하게 사용할 수 있기 때문이다.
- 또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다.
- → 이는 프로그램의 공간적인 효율성을 높여준다.
#.List
객체를 일렬로 늘어놓은 구조
객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능 제공
순서가 있는 데이터의 집합으로 데이터의 중복을 허용
대표적인 구현체로 ArrayList와 LinkedList
○ ArrayList
Java의 Vector를 개선한, 배열로 구현된 List이다. 즉, 데이터가 저장된 순서가 같다는 뜻이다.
사실상 배열과 같은 자료구조이기 때문에, List의 연산 자체의 수행 시간 속도는 배열과 같다.
- 단방향 포인터 구조로 각 데이터에 대한 인덱스(Index)를 가지고 있어 조회 기능에 성능이 뛰어남
○ LinkedList
다음 노드의 주소를 기억하고 있는 List로, 배열에 비해 삽입과 삭제가 간단하다.
하지만, 탐색(검색)의 경우 첫 번째 노드부터 탐색하기 때문에 속도가 느리다.
- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용하다.
- Stack(스택), Queue(큐), 양방향 큐 등을 만들기 위한 용도로 쓰임
#.Set
중복된 값을 저장하지 않으며 순서를 유지하지 않는 데이터 집합
하나의 null만 저장 가능
○ HashSet
HashMap에서 Key값이 없는 자료형 집합이라고 생각해도 무방하다.
value(값)이 포함되어 있는지 아닌지만 관심이 있다. 순서를 보장하지 않으며, 중복 값을 허용하지 않는다.
가장 빠른 임의 접근 속도이고, 순서를 예측할 수 없다.
○ TreeSet
Red-Black Tree 자료구조를 사용한 Set이다.
정렬 방법을 지정할 수 있다.
#.Map
키(Key),값(Value)의 쌍으로 이루어진 데이터의 집합, 데이터 순서를 보장하지 않으며 키의 중복을 허용하지 않으나 값의 중복을 허용한다.
○ HashMap
가장 일반적으로 사용하는 Map이다.
Key값에 해시 함수를 적용하여 나온 Index에 Value를 저장하는데, 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
○ HashTable
HashMap보다는 느리지만 동기화를 지원한다.
HashMap과 다른 점은 Key값 혹은 Value값에 null을 넣으면 컴파일 에러 발생
○ TreeMap
Red-Black Tree 자료구조를 이용한 Map이다.
Tree(트리) 구조이기에 어느 정도 순서를 보장한다.
정렬된 순서대로 Key, Value를 저장하여 검색이 빠르다.
#.스택,큐
○ Stack
직접 new 연산자로 객체를 생성하여 사용 가능
○ Queue
LinkedList에 new 연산자로 객체를 생성함으로써 사용 가능
https://backendcode.tistory.com/163
[IT 기술 면접] Java의 Collection Framework 이란?
이번에는 Java의 Collection에 대해 정리할 것이다. ▶ Collection Framework (JCF) Java에서 Collection 이란 데이터의 집합, 그룹을 의미하며 JCF(Java Collections Framework)는 객체들을 한 곳에 모아 관리하..
backendcode.tistory.com