일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 메세지수정
- 추후정리
- 2 > /dev/null
- 외부키
- querydsl
- 예약
- 적용우선순위
- 커밋메세지수정
- Query
- WeNews
- subquery
- ubuntu
- application.yml
- 참조키
- AuthenticationEntryPoint
- MySQL
- appspec
- EC2
- 컨테이너실행
- ㅔㄴ션
- 네이티브쿼리
- 테스트
- 테스트메소드
- foreignkey
- 검색
- 포트
- 메소드명
- appspec.yml
- 서브쿼리
- docker명령어
Archives
- Today
- Total
제뉴어리의 모든것
컬렉션 프레임워크란? 본문
컬렉션 프레임워크란?
대량의 데이터를 공통된 인터페이스로 효율적으로 관리하기 위해 만들어진 자료구조를 구현한 클래스들의 집합체.
구분 | 종류 | 중복 허용 | 순서 존재 | 정렬 여부 | THREAD-SAFE |
LIST | ArrayList | O | O | X | X |
LinkedList | O | O | X | X | |
Vector | O | O | X | O | |
SET | HashSet | X | X | X | X |
Linked HashSet |
X | O | X | X | |
TreeSet | X | X | O | X | |
MAP | HashMap | X | X | X | X |
Linked HashMap |
X | O | X | X | |
Hashtable | X | X | X | O | |
TreeMap | X | X | O | X |
- List는 데이터의 중복이 가능학고, 순서가 존재하는 자료구조
- ArrayList :
- 내부적으로 배열이 사용 됨.
- 기본 공간 10으로 시작하여 더 필요할 경우 더큰 배열을 생성하여 데이터들을 옮김.
- 중간 데이터 삽입, 삭제할 경우 데이터들을 당기고 밀어야 하기 때문에 느림 (O(N))
- 사용 시점
- 대량의 데이터를 연속적으로 쌓을때 유리함.
- 연속된 데이터를 대량으로 읽어들이때 유리함.
- 인덱스로 인한 데이터 접근이 필요한 경우 빠름.
- LinkedList :
- 데이터의 중간 삽입, 삭제에 유리함. (각 노드의 연결관계만 끊어 주면 됨)
- 특정 위치에 데이터를 조회할 경우 해당 노드까지 전 노드들을 모두 읽어야 하기 때문에 느림 (O(N))
- 실제 데이터 저장 공간 이외의 연결 노드 데이터들까지 가지고 있어야 하므로 공간적 낭비
- 사용 시점
- 중간 데이터의 조회 및 삭제가 빈번한 경우
- Vector :
- ArrayList와 거의 비슷한 자료구조, 하지만 ArrayList와 달리 thread-safe 하다.
- get, put 메소드에 모두 syncronized 걸려있어서 동시 접근시 lock 걸림
- ArrayList에 비해 성능적으로 뒤쳐짐.
- 사용 시점
- ArrayList에 비해 잘 사용되지 않음
- Stack :
- LIFO 구조. 마지막 들어온 것이 먼저 나간다
- ArrayList :
- Set은 데이터의 중복이 불가능하고, 순서가 존재하지 않는 자료구조
- HashSet :
- HashSet은 객체를 저장하기 전에 객체의 hashCode() 메소드를 호출한다. 그리고 현재 Set에 저장 되어있는 각 요소들의 hash코드값과 비교하여 같다면 다시한번 equals() 메소드로 비교하여 그래도 같다면 동일한 객체가 존재하는것으로 여긴다.
- LinkedHashSet :
- 중복은 허용하지 않지만, 순서를 가진다
- TreeSet
- 중복은 허용하지 않고, 순서를 가지지 않는다. 그러나 정렬되어 있음(기본값은 오름차순)
- null 저장 가능
- 이진탐색트리(레드-블랙 트리)를 사용하여 구현한다. 해싱보다는 느리다
- HashSet :
- Queue는 FIFO 구조를 가짐
- priorityQueue는 우선순위를 가지는 큐임. 그러므로 우선순위가 높은 요소를 우선적으로 반환함.
- Dequeue 는 양쪽으로 모두 enqueue, dequeue가 가능한 큐
- Map은 Key와 Value 한 쌍의 구조를 이루는 자료구조.
- HashMap
- 순서는 존재하지 않으며, 키는 중복 불가, 값은 중복 가능하다
- key와 value에 null을 허용
- 동기화 보장 X
- HashTable :
- HashMap과 동일하지만, Thread-safe하여 동기화 지원
- LinkedHashMap
- 들어 온 순서대로 순서를 가지는 Map
- TreeMap
- Key를 기준으로 정렬되어 저장되는 Map
- HashMap
참조 :
'JAVA' 카테고리의 다른 글
[JAVA] Gson.toJson 시 null 인 property 도 포함시켜 반환하도록 하기 (0) | 2022.10.31 |
---|---|
함수형 인터페이스에 대해 새롭게 알게된 사실 (0) | 2022.10.12 |
HttpServletRequest 객체의 uri에서 path 부분만 얻기 (0) | 2022.10.05 |
제네릭(Generic) 사용한 클래스를 @Builder로 객체 생성하기 (1) | 2022.09.19 |
IntStream과 Stream<Integer>의 차이 (0) | 2022.08.25 |