본문 바로가기

Java

컬렉션 프레임워크(Set 인터페이스)

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