Java HashSet VS TreeSet

Soozoo·2024년 6월 24일

JAVA

목록 보기
18/41

HashSet의 기본 특성

순서 없음: 요소들이 저장되는 순서를 보장하지 않습니다.
중복 불허: 동일한 요소가 중복되어 저장되지 않습니다.
클래스형 자료형만 사용 가능: 기본 자료형이 아닌 클래스형 자료형만 사용할 수 있습니다.

Code 예제:

package ex02.collection.set;
import java.util.*;

public class MainEntry {
    public static void main(String[] args) {
        // 문자열을 저장하는 HashSet 생성
        HashSet<String> hs = new HashSet<String>();
        
        // 요소 추가
        hs.add("키보드");
        hs.add("마우스");
        hs.add("컵");
        hs.add("볼펜");
        hs.add("노트북");
        hs.add("키보드"); // 중복된 요소
        
        System.out.println("요소의 개수 : " + hs.size()); // 중복 허용되지 않음
        System.out.println(hs); // 순서 없음
        
        // 정수를 저장하는 HashSet 생성
        HashSet<Integer> hs2 = new HashSet<>();
        
        hs2.add(100);
        hs2.add(3);
        hs2.add(1000);
        hs2.add(1000); // 중복된 요소
        
        System.out.println("요소의 개수 : " + hs2.size());
        System.out.println(hs2);
        
        // 다양한 타입의 요소를 저장하는 HashSet 생성
        HashSet<Object> hs3 = new HashSet<>();
        hs3.add(10.0);
        hs3.add(300);
        hs3.add(1000);
        hs3.add("String Type");
        
        System.out.println(hs3);
        
        // Iterator를 사용하여 요소 출력
        Iterator<String> it = hs.iterator();
        while(it.hasNext()) {
            System.out.println(it.next()); // 요소를 꺼내와서 출력
        }
        
        System.out.println();
        
        // 다양한 타입의 HashSet 요소 출력
        Iterator<Object> it3 = hs3.iterator();
        while(it3.hasNext()) {
            System.out.println(it3.next());
        }
    }
}

실행예시:

요수의 개수 : 5
[컵, 노트북, 볼펜, 키보드, 마우스]
요수의 개수 : 3
[3, 100, 1000]
[10.0, String Type, 1000, 300]
컵
노트북
볼펜
키보드
마우스

10.0
String Type
1000
300

TreeSet의 기본 특성

순서 없음: 요소들이 저장되는 순서를 보장하지 않습니다.
중복 불허: 동일한 요소가 중복되어 저장되지 않습니다.
클래스형 자료형만 사용 가능: 기본 자료형이 아닌 클래스형 자료형만 사용할 수 있습니다.
순서 정렬: HashSet 과 다르게 TreeSet은 자동정렬을 해준다.

Subset, headSet, tailset

code 예시

package ex02.set.set;

import java.util.*;

class TreeSetEx1 {
	public static void main(String[] args) {
		TreeSet set = new TreeSet();
		String from = "a";
		String to = "b";
		set.add("abc");
		set.add("alien");
		set.add("bat");
		set.add("car");
		set.add("Car");
		set.add("disc");
		set.add("dance");
		set.add("dZZZZ");
		set.add("dzzzz");
		set.add("elephant");
		set.add("elevator");
		set.add("fan");
		set.add("flower");
		System.out.println(set);
		System.out.println("range search : from " + from + " to " + to);
		System.out.println("result1 : " + set.subSet(from, to));
		System.out.println("result2 : " + set.subSet(from, to + "zzz"));
		System.out.println("result3 : " +set.subSet("c", "f"));
        
        int[] score = {85, 95, 50, 35, 45, 65, 10, 100};
		
		System.out.println(score);

		for(int i=0; i < score.length; i++) {
			set.add(new Integer(score[i]));
		}
		
		System.out.println(set);
		

		System.out.println("50보다 작은 값 :" + set.headSet(new Integer(50)));
		System.out.println("50보다 큰 값 :" + set.tailSet(new Integer(50)));
	}
}

실행 예시:

range search : from a to b
result1 : [abc, alien]
result2 : [abc, alien, bat]
result3 : [car, dZZZZ, dance, disc, dzzzz, elephant, elevator]
profile
넙-죽

0개의 댓글