일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래머스
- 시나공
- 회고
- programmers
- 공부일지
- kotlin
- 자바
- java
- 데이터베이스
- 코딩봉사
- softeer
- 백준
- 백준알고리즘
- C++
- 코딩교육봉사
- 문제풀이
- MYSQL
- 1과목
- 백준 알고리즘
- 소프티어
- CJ UNIT
- 정보처리산업기사
- SW봉사
- BFS
- SQL
- python
- 알고리즘
- 코틀린
- 스프링
- 파이썬
- Today
- Total
JIE0025
[Java] Collection Framework (List, Queue, Set) & Map 본문
복습을 하려고 컬렉션을 내 블로그에서 검색해봤는데, 글을 작성하지 않았나보다.
그래서 이글을 적는다!
✅ 개요
우리는 대학에서 자료구조에 대해 배운다.
자료구조가 중요한 이유는 어떤 상황에서 어떤 자료구조를 사용해야 효율적일지 아는것에서 프로그램의 효율성이 좋아지기 때문이다.
자바에서는 자료구조를 쉽게 다루기 위해 <컬렉션>을 제공한다.
컬렉션 : 다수의 요소를 하나의 그룹으로 묶어 효율적으로 저장하고 관리하는데 사용하는 기능을 제공
이제 컬렉션 프레임워크의 계층구조를 살펴보자. 어떤 클래스를 상속하고, 구현하는지 관계를 알아보고 각 차이를 알아보자!)
✅ 컬렉션 프레임워크 계층
우리가 자바에서 자주 사용하는 ArrayList, LinkedList, HashSet등등.... 모두 여기에서 보인다.
0️⃣ Iterable 은 반복가능한 이라는 뜻으로, Collection인터페이스가 Iterable 인터페이스를 상속받는다.
https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html
1️⃣ Collection 인터페이스를 상속, 구현받은 객체들은 모두 java.util 패키지 내부에 존재한다.
2️⃣ Collection인터페이스를 상속받은, List, Queue, Set 인터페이스가 있다.
3️⃣ List, Queue, Set은 각각의 구현체가 존재한다.
4️⃣ Map 은 Collection과 별개로 존재한다. (java.util 패키지 내부에 존재한다)
✅ List, Queue, Set의 구현체
⏺ List : 순서가 있는 데이터의 집합
- ArrayList : 크기가 가변적인 배열로 구현, 인덱스를 이용해 접근 가능, 원소의 삽입 삭제에 더 많은 시간 소요 됨
- LinkedList : 노드로 연결된 리스트로 구현, 링크를 통해 참조되어 삽입삭제가 빠르다.
- Vector : ArrayList와 유사한 동작, 동기화되어 스레드 안전성 제공
(get put에 모두 synchronized가 있어 스레드마다 lock이 걸리고, 성능은 arraylist보다 좋지 못함)- Stack : LIFO(LastInFirstOut)의 특성을 가짐, push, pop
⏺ Queue : FIFO(FirstInFirstOut) 를 지키는 자료구조
- PriorityQueue : 우선순위 큐, 우선순위에 따라 정렬된 순서를 유지 (이진트리로 구현되어있다)
- Deque : 양쪽 끝에서 삽입 삭제 작업이 가능한 큐
- LinkedList : 링크드리스트는 Deque인터페이스를 구현하기도 함. 삽입 삭제가 양쪽 끝에서 가능하다.
- ArrayDeque : 배열로 구현됨.
⏺ Set : 집합, 중복을 허용하지 않는 자료구조
- HashSet : 해시테이블을 사용해 구현된 Set, 순서를 유지 하지 않음
- LinkedHashSet : 해시테이블+연결리스트를 사용해 구현, 삽입순서대로 순서 유지,
- SortedSet : 자동으로 요소를 정렬해 유지하는 Set인터페이스
- TreeSet : 이진검색트리를 사용해 구현됨
✚ Collection을 상속/구현하지는 않는 Map
Map은 다음과 같은 특징을 가진다.
- Set과 같이 순서가 없다.
- Key값은 중복될 수 없다.
- Value는 중복될 수 있다.
⏺ Map : key-value로 이루어진 자료구조
- HashMap : 해시테이블을 사용해 구현된 Map , null키와 값이 모두 허용된다. 키와쌍을 저장, 순서는 유지하지 않는다.
일반적으로 가장 많이 사용되는 구현체 - HashTable : HashMap과 유사, 동기화되어 스레드 안전성을 제공한다. null키와 값 허용되지 않는다.
- LinkedHashMap : 해시테이블+연결리스트를 사용해 구현, 삽입된 순서를 유지한다.
- SortedMap: Key들의 정렬 순서를 유지한다.
- TreeMap : 이진검색트리를 이용해 구현됨
자료구조 컬렉션 복습 겸 글을 작성해봤는데
직접 사용하면서 어떤게 더 합리적으로 사용될 수 있는지는 지속적으로 고민해봐야한다.
'개발 > Java, Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 기초 (0) | 2023.05.24 |
---|---|
[Kotlin] 코틀린이란 (왜 필요하고, 왜 배워야할까) (0) | 2023.05.23 |
[Java] GC(Garbage Collection) 가비지컬렉션이란? (0) | 2023.05.05 |
[Design Patten] Proxy (0) | 2022.12.12 |
[Design Patten] Singleton (0) | 2022.12.07 |