2-1(4) TreeSet

zhyun·2020년 9월 15일
0

HighJava

목록 보기
6/67

TreeSet

  1. HashSet은 데이터에 순서가 없으나 (등록되는 순서를 알지 못함.)
  2. TreeSet은 '자동정렬' 기능이 들어가 있다.
  3. '이진트리' 자료구조 특징 : 검색 속도가 빠르다.

SortedSet

  1. TreeSet에 저장된 자료 중 특정한 자료보다 작은 자료를 찾아서
    SortedSet으로 반환하는 메서드가 있다.

headSet

=> headSet(기준값) : 기본적으로 '기준값'은 포함시키지 않는다.
=> headSet(기준값, 논리값) : 논리값이 true이면 '기준값' 포함.

tailSet

=> '기준값'보다 큰 자료를 찾아 SortedSet으로 반환하는 메서드.
=> tailSet(기준값) : 기본적으로 '기준값'은 포함된다.
=> tailSet(기준값, 논리값) : 논리값이 false이면 '기준값' 포함하지 않음.

subSet

=> subSet(기준값1, 기준값2)
: 기준값1~기준값2 사이의 값을 가져옴 ('기준값1'포함, '기준값2' 미포함)
=> subSet(기준값1, 논리값1, 기준값2, 논리값2)
: 각 기준값을 포함할 지 여부를 설정한다.(논리값이 true이면 포함)

public class T07_SetTest {
	public static void main(String[] args) {
		
		TreeSet<String> ts = new TreeSet<String>(); 
        	// Set<String>타입으로 객체화하면 Set에 해당한 메서드만 
        	//사용할 수 있어서 TreeSet<String>타입으로 !
		//자바 p.152
		//영어 대문자를 문자열로 변환하여 TreeSet에 저장하기
		for(char ch='Z'; ch>='A'; ch--) {
			String temp = String.valueOf(ch);
			ts.add(temp);//add시키는 시점에 바로 자동정렬이 되어진다.
		}
		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 사이의 값을 가져옴
		// ('기준값1'포함, '기준값2' 미포함)
		//subSet(기준값1, 논리값1, 기준값2, 논리값2) :
		//각 기준값을 포함할 지 여부를 설정한다.(논리값이 true이면 포함)
		System.out.println("K(포함)부터  N(미포함)까지 :"
        			     +ts.subSet("K", "N"));// 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));
		
		
	}
		
}




profile
HI :)

0개의 댓글