자바 Collection에 대한 심화 질문 모음
자바에서 Collection이란?
-
효율적으로 데이터를 저장하고 관리하는 데 도움이 되는 인터페이스와 클래스의 모음
-
Set
,List
,Queue
,Deque
와 같은 인터페이스 제공 -
ArrayList
,Vector
,LinkedList
,HashSet
,PriorityQueue
,TreeSet
,LinkedHashSet
과 같은 클래스 제공 -
컬렉션 디자인을 할 필요없이 컬렉션 활용에만 집중할 수 있으므로 프로그래밍 노력 감소
-
데이터 구조의 고성능 구현을 제공하므로 성능 향상
자바에서 프레임워크란?
-
이미 만들어진 아키텍처를 제공하는 클래스 및 인터페이스 집합.
-
최적의 객체 지향 설계에는 항상 모든 클래스가 동일 종류의 작업을 수행하도록 클래스 컬렉션이 있는 프레임워크가 포함된다.
ArrayList와 Vector의 차이점?
- ArrayList
- 배열 크기의 50퍼센트만큼 크기를 늘릴 수 있음
- non synchronized
- non thread-safe
- non legacy class
- Vector
- 배열 크기의 두배만큼 크기를 늘릴 수 있음
- synchronized
- thread-safe
- legacy class
- thread-safe란?
멀티 스레드 환경에서 한 자원에 대해 여러 스레드가 접근해도 문제가 생기지 않음
- synchronized(동기화)란?
한 스레드가 자원을 사용하는 동안 해당 자원에 대해 lock이 걸려있어서 다른 스레드는 접근하지 못함
즉, 멀티 스레드가 아닌 환경에서는 ArrayList가 더 빠르다. 또한 Vector는 레거시 클래스이므로 ArrayList를 쓰는 것을 더 추천
Iterator과 Enumeration의 차이점?
-
Iterator
- legacy, non-legacy 모두 통과
- Enumeration보다 느림
- 순회 중간에 remove 가능
- fail-fast
-
Enumeration
- legacy만 통과
- Iterator보다 빠름
- 순회하면서 traverse만 가능
- non fail-fast
- fail-fast란?
동작 중 오류가 발생하면 바로 이를 알리고 작업을 중단.
반대는 fail-safe : 동작 중 오류가 발생해도 계속 작업 진행
LinkedList와 ArrayList의 차이점?
-
LinkedList
- 데이터 조작에 최적화
- 삽입, 제거 : O(1)
- 탐색 : O(n)
-
ArrayList
- 데이터 저장 / 액세스에 최적화
- 삽입, 제거 : 최상은 O(1), 최악은 O(n)
- 탐색 : O(1)
Queue 인터페이스에서 poll()과 remove()의 차이점?
둘 다 헤드에 있는 요소 반환하고 제거.
하지만 대기열이 비어있을 때 remove()는 예외를 throw, poll()은 null반환
컴퓨터 메모리 측면에서 Stack이란?
함수에 의해 생성된 임시 변수 저장하는 곳. 런타임 중에 선언, 초기화 된다.
Map 인터페이스에서 collection view를 나열해보기
- key-set view : 키 집합
- value-set view : 값 집합
- entry-set view : 키-값 쌍의 집합
thread-safe한 Collection을 만드는 법
Collections.synchronizedList(list);
Collections.synchronizedMap(map);
Collections.synchronizedSet(set);
Queue와 Deque의 차이점?
-
Queue
- 한쪽 끝에서 추가 / 제거
-
Deque
- 양쪽 끝에서 추가 / 제거
hashmap과 hashtable의 차이점?
-
hashmap
- non-synchronized, non thread-safe
- null key, null value 허락
- iterator가 순회
-
hashtable
- synchronized, thread-safe
- null key, null value 허락하지 않음
- iterator, enumerator가 순회
Iterator란?
컬렉션을 순화하기 위한 방법을 제공하는 인터페이스.
queue에서 peek()이란?
헤드 요소를 리턴
어떤 요소도 제거하지 않으며 비어 있으면 null 리턴
Author And Source
이 문제에 관하여(자바 Collection에 대한 심화 질문 모음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@s2moon98/자바-Collection에-대한-심화된-고찰저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)