13_01_set_hashSet_TreeSet

안녕하세요 MrChooCAI 입니다~~@@

이번 포스트에서는 Collection framework중에 하나인 Set에 대해서 자세히 알아보도록 하겠습니다. 실습코는 하기 github을 참조 하시기를 부탁 드리겠습니다.

Github: https://github.com/Chooyoungjun/javastudy/tree/main/14_01_set

[목차]

Set

Set은 수학에서 사용하는 집합과 구조가 비슷합니다. 그래서 요소들을 집합적으로 모아 놓은 자료 구조를 set이라고 말 할 수 있습니다. 수학에서 집합과 비슷하기 때문에 2가지 특징을 가진다고 말할 수있습니다.

-      중복을 허용 하지 않습니다. (수학에서도 집합을 표시 할 때 중복을 허용하지 않았습니다.)

-      저장 순서를 유지 한지 않았습니다. (집합에서도 저장 순서가 있지 않습니다. 그냥 분류만 할 뿐 입니다.)

위의 특징을 가진 setjava에서는 hashset treeset으로 2가지종류 클래스로 제공합니다.

1.     HashSet

일반 적인 Set의 특징을 가진 클래스라고 생각하시면 되겠습니다.

[생성자]


위의 그림과 같이 Hashset을 생성 할 수 있습니다. 생성자에 대해서 잘 모르신다면 앞의 생성자 파트를 참조해 주시기를 부탁드리겠습니다.

(https://choocai.blogspot.com/2021/12/07java.html )

[메서드]

Collection클래스를 상속 받아서 만든 메서드 이기 때문에 공통적으로 들어가는 메서드가 있는 부분은 꼭 참고 하시기를 부탁 드리겠습니다. 좀 더 자세하게 공부 하고 싶다면 앞의 Collection컬렉션의 method와 비교하시면 더 도움이 되실 것이라고 생각 합니다. 하기 표를 참조해 주시기를 부탁드리겠습니다.


위의 Snapshot에서 add 메서드에서 E라는 변수를 보실 수 있겠습니다. 이 변수는 generic관련 내용입니다. 혹시 이 부분에 대해서 잘 모르시면 앞의 포스트를 참조해 주시기를 부탁드리겠습니다. 이 정도 정보까지 알고 TreeSet에 대해서 알아보고 HashSet과 함께 실습을 진행하도록 하겠습니다.

2.     TreeSet

Set과 동일하게 중복이 없으나, 정렬기능이 추가된 형태를 가진 set을 말합니다.

[정렬 방법 규칙] (이진 탐색 트리와 유사 합니다.)

n  기준 데이터보다 작다면 기준의 왼쪽

n  기준 데이터보다 크다면 기준의 오른쪽

예시 그림)


메서드는 역시 Collection을 상속 받기 때문에 HashSet과 비슷하게 사용이 됩니다. 자주 사용하는 중요한 메서드는 겹치기 때문에 따로 적지는 않겠습니다. TreeSet의 메서드는 parent classCollection을 참조하시거나 비슷한 HashSet을 참조하시면 되겠습니다.

[실습]

HashSetTreeSet을 구현하여 실습을 통해서 이해해 보도록 하겠습니다. 그리고 차이점을 확인해 보도록 하겠습니다.


위의 Snapshot과 같이 HashSetalphabet순서와 상관없이 저장 되고 있는 것을 알 수 있습니다. 하지만 TreeSet은 알파벳 순서에 따라서 저장하는 것을 알 수 있습니다.

지금까지 collection framework에서 set에 대해서 알아 보았습니다.

Comments