개발자 미니민의 개발스터디

[JAVA] 자바 - Set<E> 클래스 (HashSet / LinkedHashSet / TreeSet)

by mini_min

[JAVA] 자바
- Set<E> 클래스

 

✔️ Set<E> 클래스

순서를 유지하지 않는 데이터의 집합이다.

순서도 안지키고 중복값도 허용하지 않는다. (ArrayList와 완전 다름)

하나의 null 만 저장할 수 있다.

 

◾ 주요 구현 클래스 : HashSet, LinkedHashSet, TreeSet

◾ 주요 메소드

💡 당연하게도, Set<E>클래스는 순서가 없기 때문에 index 메소드는 사용하지 못한다.

 

Set<String> set = new HashSet<>();
		
		//순서가 중요하지 않아서 인덱스로 데이터 추가xx
		set.add("서울");
		set.add("부산");
		set.add("대구");
		set.add("광주");
		set.add("인천");
		set.add("대전");
		set.add("서울"); //기존 서울을 덮는다. 중복 허용하지 않음
		
		System.out.println(set);  //등록 순서로 출력되지 않음

 

 

 

✔️ LinkedHashSet 클래스

HashSet 의 하위 클래스이다. 해쉬테이블 + 링크드 리스트를 구현한 클래스로 추가하는 순서대로 저장이 가능하다!

❌ 단, 중복값은 허용하지 않음 .

 

Set<String> set = new LinkedHashSet<>();
		
		set.add("서울");
		set.add("부산");
		set.add("대구");
		set.add("광주");
		set.add("인천");
		set.add("대전");
		set.add("서울"); //중복 데이터는 기존 데이터를 덮는다.
		
		System.out.println(set);

 

 

 

✔️ TreeSet 클래스

SortedSet의 구현 클래스이다. 데이터를 자동으로 정렬해주는 기능이 있지만, Comparable 인터페이스를 구현한 클래스에서만 정렬 기능이 가능하다. (모든 클래스에서 가능한게 아님)

❌ 단, 중복값은 허용하지 않음 .

 

Set<String> set = new TreeSet<>();
		
		set.add("서울");
		set.add("부산");
		set.add("대구");
		set.add("광주");
		set.add("인천");
		set.add("대전");
		set.add("서울"); //중복 데이터는 기존 데이터를 덮는다.
		
		//가나다라마바사...순서
		//넣기만하면 자동 정렬
		System.out.println(set);

 

 

 

✔️ Set 클래스로 로또 프로그램 만들기

무작위 순서로 출력하는 Set 클래스 이용

public static Set<Integer> lotto() {
	Set<Integer> set = new TreeSet<>();
    
    while(set.size() < 6) {
     set.add((int)(Math.random()*45)+1));
    }
    
    return set;

}

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기