데이터를 효율적으로 저장하는 자료구조들의 집합
크게 List, Set, Map으로 나뉜다.
각 자료구조들의 클래스는 제네릭으로 표현됨
순서가 있는 데이터의 집합으로, 중복이 허용 된다.
인덱스로 원소를 관리하며 배열과 유사한 리스트
용량이 꽉 찼을 경우 더 큰 용량의 배열을 새로 만들어 기존의 원소들을 새 배열로 옮기는 작업 진행
각 노드마다 양방향으로 연결되어있는 리스트
특징 | ArrayList | LinkedList |
---|---|---|
검색 | O(1)(index로 접근) | O(N)(일일이 탐색) |
삽입 | O(N)(한 칸씩 데이터를 옮겨야됨) | O(1)(맨 앞 혹은 맨 뒤) or O(n) |
삭제 | O(N)(한 칸씩 데이터를 옮겨야됨) | O(1)(맨 앞 혹은 맨 뒤) or O(n) |
LIFO(Last In First Out) 구조의 리스트
FIFO(First In First Out) 구조의 리스트
순서가 없는 데이터의 집합으로, 중복이 허용되지 않는다.
해시 알고리즘을 사용한 Set
(+ LinkedHashSet : 저장 순서 유지 기능이 있는 HashSet)
이진트리를 기반으로 만들어진 Set
key-value 형식의 쌍으로 이루어지며 순서가 없는 데이터의 집합
key는 중복 비허용, value는 중복 허용
해시 알고리즘을 사용한 Map
(+ LinkedHashMap : 저장 순서 유지 기능이 있는 HashMap)
HashMap과 유사하게 해시 알고리즘을 사용한 Map 구조의 table
특징 | HashMap | HashTable |
---|---|---|
동기화 | x | o |
속도 | 더 빠름 | 더 느림(동기화 처리) |
성능 | 더 좋음(보조 해시 함수 사용 -> 충돌 감소) | 더 나쁨 |
이진트리를 기반으로 만들어진 Map
출처
https://tenlie10.tistory.com/10
http://www.tcpschool.com/java/java_collectionFramework_concept
https://velog.io/@adam2/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%ED%95%B4%EC%8B%9C-%ED%85%8C%EC%9D%B4%EB%B8%94