본문 바로가기
IT/Java

자바 Set(HashSet, TreeSet, LinkedHashSet)

by flatsun 2019. 2. 2.
반응형

저번에는 List를 했으니 이번에는 Set에 대해 알아보자


List의 경우에는 중복을 허용하고 add를 통해 넣는 순서대로 쭉쭉 삽입이 된다


근데 Set의 경우에는 중복이 허용이 안되고 순서가 없다

일단 넣고 출력을 해 보면 아무렇게나 막 나온다는 말이다



정의는

HashSet<변수 자료형> set명 = new HashSet<>();

이런 식으로 하면 된다


먼저 HashSet 형태의 set을 만들고 

add를 통해 알파벳들을 삽입을 했다


set은 순서가 없어서 list 처럼 출력 시 .get으로 출력이 안되는데

따라서 Iterator 객체를 만들어 줘서 순서를 만든 다음 그 이후에 출력을 해야 한다


Iterator는

Iterator<변수 자료형> Iterator명 = 가져올set명.iterator();


로 정의를 하고 iterator명으로 값을 가져오는데

while을 사용해서


 iterator명.hasNext()

다음 값이 있다면


iterator명.next() 

다음 값


이런 식으로 값을 가져올 수 있다

출력을 한번 해 보면



이런 식으로 add 한 순서와 상관없이

아무렇게나 출력이 되고

a를 여러개 넣었지만 출력되는 a는 하나뿐이다


왜냐면 중복을 허용하지 않기 때문에 여러개의 a를 넣어도 하나만 출력된다


다음은 set의 종류인데

HashSet, TreeSet, LinkedHashSet인데


HashSet은 중복이 안되고 순서가 없는 형태의 Set이고

TreeSet은 HashSet에서 값에 따라(a-z, 1-9) 순서를 만들어 주는 Set이고

LinkedHashSet은 add 한 순서에 따라 순서가 결정되는 Set이다


예제를 통해 보자면



TreeSet은 add를 어떻게 했던 간에

a-z 1-9 이런 식으로 값에 따라 순서를 만들어서 출력하게 된다



LinkedHashSet은 add 한 순서에 따라 출력이 된다


즉 Set은 기본적으로 중복이 안되고

종류에 따라 값에 따라 순서를 만들어 주는 TreeSet과

삽입 순서에 따라 순서를 만들어 주는 LinkedHashSet이 있다



마지막으로 Set 역시 일반 배열로 변환이 가능한데


변수 자료형 배열명[] = Set명.toArray(new 변수 자료형[Set명.size()]); 를 통해

Set을 가지고 일반 배열 형태로 만들어 줄 수 있다

반응형

'IT > Java' 카테고리의 다른 글

자바 Stack 알아보기  (0) 2019.02.11
자바 Map(HashMap, TreeMap, HashTable, LinkedHashMap)  (0) 2019.02.07
자바 List(ArrayList, LinkedList)  (0) 2019.01.31
자바 접근제어자(Access Modifier)  (0) 2019.01.30
자바 getter, setter 알아보기  (4) 2019.01.26

댓글