본문 바로가기
고급JAVA

Treeset

by 현닝이 2022. 7. 23.

[Java] 자바 TreeSet 사용법 & 예제 총정리 (tistory.com)

 

[Java] 자바 TreeSet 사용법 & 예제 총정리

TreeSet이란? JDK 1.2부터 제공되고 있는 TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가

coding-factory.tistory.com

병원가서 수업을 못들어버렸다 T/T 이분정리 진짜 최고,,,, 제2의 선생님이랄까

 

TreeSet의 생성방법

java.util.TreeSet 클래스를 import

TreeSet<타입> 변수명 = new TreeSet<>(); 선언하면 자동으로 오름차순 정렬이 되는 TreeSet을 선언

Collections.reverseOrder() 메서드를 사용하면 내림차순 정렬로 바꿀 수 있다.

Collections 를 사용하기 위해서는 java.util.collections를 import 해주어야한다

 

<값추가>

값을 추가할대는 

add(Object) 메서드를 이용

TreeSet은 기본 오름차순 정렬이되어있다

 

<값 삭제>

remove(Object)

object가 없을 경우 false를 리턴

clear() 메서드 사용하면 모든 값을 삭제

 

<TreeSet 의 크기 구하기>

.size()메서드를  이용하면 treeset에 있는 값의 갯수를 출력할 수 있다.

 

 

선생님이 해주신 예제

package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

public class T06TreeSetTest {
   public static void main(String[] args) {
      
      TreeSet<String> ts = new TreeSet<String>();
      
      List<String> abcList = new ArrayList<String>();
      
      //영어 대문자를 문자열로 변환하여 List에 저장하기
      for(char ch = 'A';ch <='Z';ch++) {
         String temp = String.valueOf(ch);
         abcList.add(temp);
      }
      System.out.println("abcList 자료(섞기전): "+abcList);
      
      Collections.shuffle(abcList);
      
      System.out.println("abcList 자료(섞기후): "+abcList);
      for(String str : abcList) {
         ts.add(str);
      }
      System.out.println("TreeSet 자료: "+ts);
      
      //TreeSet에 저장된 자료중 특정한 자료보다 작은 자료를 찾아서 SortedSet으로
      //반환하는 메서드가 있다.
      // =>headSet(기준값) : 기본적으로 '기준값'은 포함시키지 않는다.
      // =>headSet(기준값,논리값) :논리값이 true이면 '기준값'을 포함시킨다.
      SortedSet<String> ss1 = ts.headSet("K");
      System.out.println("K 이전 자료: "+ss1);//기준값 미포함
      System.out.println("k 이전 자료(기준값 포함): "+ts.headSet("K",true));
      
      //'기준값'보다 큰 자료를 찾아 SortedSet으로 반환하는 메서드
      // =>tailSet(기준값): 기본적으로 '기준값'을 포함시킨다.
      // =>tailSet(기준값, 논리값): 논리값이 false이면 '기준값'을 포함시키지 않는다.
      SortedSet<String> ss2 = ts.tailSet("K");
      System.out.println("K 이후 자료: "+ss2);
      System.out.println("K 이후 자료(기준값 미포함): "+ ts.tailSet("K",false));
      
      //subSet(기준값1, 기준값2) : 기준값1~기준값2 사이의 값을 가져온다.
      //                     (4'기준값1' 포함, '기준값2' 미포함)
      //subSet(기준값1,논리값1,기준값2,논리값2) : 각 값을 기준으로 포함여부 설정
      System.out.println("K(포함)부터 N(미포함)까지: "+ ts.subSet("K", "N"));
      System.out.println("K(포함)부터 N(포함)까지: "+ ts.subSet("K",true, "N",true));
      System.out.println("K(미포함)부터 N(미포함)까지: "+ ts.subSet("K",false, "N",false));
      System.out.println("K(미포함)부터 N(포함)까지: "+ ts.subSet("K",false, "N",true));
      
   }
}

 

 

'고급JAVA' 카테고리의 다른 글

Map  (0) 2022.07.23
Equals Hashcode  (0) 2022.07.23
Hashset  (0) 2022.07.23
Comparable / Comparator  (0) 2022.07.23
Stack & Queue  (0) 2022.07.23