11. 기술면접 - 자바 - 컬렉션 프레임워크 (Collection Framework)
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다
전체 구조
Collection | Map |
- List ㄴ 순서가 있음 ㄴ 데이터 중복 가능 - Set ㄴ 순서 없음 ㄴ 데이터 중복 불가능 |
- 검색할 수 있는 인터페이스 - 데이터를 삽입할 때 Key와 Value 의 형태로 삽입되며, Key를 이용해서 Value 을 얻을 수 있다 |
- 선택과정 1. Map과 Collection 인터페이스 중 선택 1-1. Collection 선택 시 사용 목적에 따라 List, Set 선택 1-2. List 선택 시, Linked 또는 Array 택 |
Map | Collection | |
Set | List | |
HashMap Entry<k,v> 의 배열로 저장되며, 배열의 index는 내부함수를 통해 계산된다 내부 hash 값에 따라서 키순서가 정해지므로 특정 규칙 없이 호출된다 key, value에 null 값을 허용한다 비동기 처리 시간복잡도 O(1) |
HashSet 저장 순서를 유지하지 않는 데이터의 집합 해시 알고리즘(Hash algorithm) 을 사용하여 검색속도가 매우 빠르다 내부적으로 Hash Map 인스턴스를 이용하여 요소를 저장한다 |
ArrayList 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 데이터 검색에 적합하다 데이터의 삽입, 삭제 시 해당 데이터 이후 모든 데이터가 복사되므로 삽입, 삭제가 빈번한 데이터에는 부적합하다 |
LinkedHashMap HashMap을 상속받으며, Linked List 로 저장된다 입력 순서대로 출력된다 비동기 처리 시간복잡도 O(n) |
LinkedHashSet 저장순서를 유지하는 HashSet |
LinkedList 양방향 포인터 구조로 데이터의 삽입, 삭제 시 해당 노드의 주소지만 바꾸면 되므로 삽입, 삭제가 빈번한 데이터에 적합하다 데이터의 검색 시 처음부터 노드를 순회하므로 검색에는 부적합하다 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰인다 |
TreeMap 내부적으로 레드-블랙 트리(Red-Black tree)로 저장된다 키값이 기본적으로 오름차순 정렬이 출력된다 키값에 대한 Compartor 구현으로 정렬 방법을 지정할 수 있다 시간복잡도 O(logN) |
TreeSet 데이터가 정렬 된 상태로 저장되는 이진탐색 트리(BST)의 형태로 요소를 저장 이진 탐색 트리 중에 성능을 향상시킨 레드-블랙 트리(Red-Black Tree)로 구현되어 있다 Compartor 구현으로 정렬 방법을 지정 |
Vector 내부에서 자동으로 동기화 처리가 일어난다 성능이 좋지 않고 무거워 잘 쓰이지 않는다 |
ConCurrentHashMap multiple lock update 할 때만 동기(syncronized) 처리 key 와 value 에 null 값을 허용하지 않는다 |
||
HashTable single lock 모든 메서드에 대해 동기처리 key와 value 에 null 값을 허용하지 않는다 |
공통점 : 중복저장이 안된다
차이점 : hashmap 은 key 를 통해 저장하고 조회하는 데, hashset 은 해당타입으로 바로 넣고 iterator 또는 for문을 통해 조회한다
'∞. 기술 면접 > 7. 자바' 카테고리의 다른 글
13. 기술면접 - 자바 - String, StringBuilder, StringBuffer (0) | 2021.10.22 |
---|---|
12. 기술면접 - 자바 - 클래스, 객체, 인스턴스 (0) | 2021.10.22 |
10. 기술면접 - 자바 - 인터페이스와 추상 클래스 차이 (0) | 2021.10.21 |
09. 기술면접 - 자바 - 자바는 항상 CallByValue 이다 (0) | 2021.10.21 |
08. 기술면접 - 자바 - 직렬화(Serializable) (0) | 2021.10.21 |
댓글
이 글 공유하기
다른 글
-
13. 기술면접 - 자바 - String, StringBuilder, StringBuffer
13. 기술면접 - 자바 - String, StringBuilder, StringBuffer
2021.10.22 -
12. 기술면접 - 자바 - 클래스, 객체, 인스턴스
12. 기술면접 - 자바 - 클래스, 객체, 인스턴스
2021.10.22 -
10. 기술면접 - 자바 - 인터페이스와 추상 클래스 차이
10. 기술면접 - 자바 - 인터페이스와 추상 클래스 차이
2021.10.21 -
09. 기술면접 - 자바 - 자바는 항상 CallByValue 이다
09. 기술면접 - 자바 - 자바는 항상 CallByValue 이다
2021.10.21