Q1. Set 인터페이스의 특징은 무엇인가?
- Set 인터페이스는 데이터를 1) 순서에 상관 없이 2) 중복 없이 저장하는 인터페이스입니다.
Q2. Set 인터페이스를 구현한 클래스는 무엇이 있는가?
- Set 인터페이스를 구현한 대표적인 클래스로는
HashSet 클래스, TreeSet 클래스, LinkedHashSet 클래스가 있습니다.
Q3. Treeset 클래스는 어떤 자료 구조를 사용하는가?
- 이진 탐색 트리, 정확하게는 Red-Black Tree를 사용합니다.
Q4. HashSet, TreeSet, LinkedHashSet 3가지 클래스 중 어떤 것이 가장 성능이 좋은가?
그 이유는 무엇인가?
- HashSet 클래스가 가장 성능이 좋다. 왜냐하면 HashSet 클래스는 데이터를 정렬 하지 않고,
TreeSet 클래스와 LinkedHashSet 클래스 같은 경우는 정렬을 하기 때문이다.
Q5. 레드 블랙 트리란 무엇인가?
- 이진 탐색 트리의 일종으로, TreeSet 클래스와 TreeMap 클래스의 구현에 사용되며,
값을 정렬된 상태로 저장하도록 한다.
Q6. 레드 블랙 트리의 삽입, 삭제, 검색의 시간 복잡도는 무엇인가?
- O(logn)이다.
Q6-1 레드 블랙 트리의 삽입, 삭제, 검색의 시간 복잡도는 왜 O(logn)인가?
-
Q7. LinkedHashSet 클래스는 값을 어디에 저장하는가?
-
Q8. Set은 무엇보다도 데이터가 중복되는 것을 허용하지 않으므로,
어떤 작업이 핵심이며, 이를 위해 어떤 어떤 메소드를 구현하는 부분이 중요한가?
-
Q9. HashSet이 구현한 인터페이스는 무엇이 있는가?
-
Q10. HashSet 클래스에는 몇 개의 생성자가 존재하는가?
각각은 무엇인가?
-
Q10-1 왜 컬렉션 객체의 데이터를 매개변수로 받는 생성자를 제공하는가?
-
Q11. 로드 팩터란 무엇인가?
- (데이터의 개수)/(자료형의 크기)를 의미한다.
Q11-1 왜 로드 팩터가 필요한가?
-
Q12.데이터의 개수가 증가하여 로드팩터보다 커지면 어떤 일이 발생하는가?
- HashSet 클래스의 경우 리해싱(rehashing)이 발생한다.
Q13. 데이터가 해시 재정리 작업에 들어가면, 어떤 일이 발생하고, 그로 인한 결과는 무엇인가?
-
Q13-1 리해싱(rehashing)은 어떻게 발생하는가?
-
Q14. 로드 팩터가 클수록, 어떤 일이 발생하는가?
-
Q14-1. 왜 로드 팩터라는 값이 클수록 데이터를 찾는 시간이 증가하는가?
-
Q15. TreeSet은 무엇에 기반해서 만들어지는가?
-
Q16. TreeSet에서 원소들이 정렬되는 것을 무엇이라고 하는가?
-
Q16-1 Natural Ordering이란 무엇인가?
-
Q17. TreeSet의 add, remove, contain 메소드의 시간 복잡도는 얼마인가?
-
Q18. Treeset 클래스는 synchronized 되어 있는가, 되어 있지 않은가?
-
참고
- Q1~Q3(Do it 자바 프로그래밍) 5/18
- Q4~Q14 자바의 신,
레드-블랙 트리 - 위키백과, 우리 모두의 백과사전 (wikipedia.org) 5/30
- Q15~Q18 자바의 신
https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html 6/9
- A1~A3 5/20
'Java' 카테고리의 다른 글
| 컬렉션 프레임워크(List 인터페이스) (0) | 2022.05.20 |
|---|---|
| 컬렉션 프레임워크(Map 인터페이스) (0) | 2022.05.20 |
| 예외 (0) | 2022.05.20 |
| 파일 I/O (0) | 2022.05.20 |
| 자바 일반 (0) | 2022.05.20 |