2014-12-16 1 views
0

나는 TreeSet에 대해 읽고 흥미로운 것을 발견했습니다. 질문이 하나 있는데 TreeSetString입니다. 이 경우 Ceilingfloor 함수는 어떻게 작동합니까? 그들은 당신이 TreeSet<E>에 넣어 선택 모든 참조 유형에 대해 행동으로천장, 바닥은 String의 TreeSet에서 어떻게 동작합니까?

NavigableSet<String> ns= new TreeSet<String>(); 
    ns.add("Yogi"); 
    ns.add("Yogendra"); 
    ns.add("Yogesh"); 
    ns.add("hello"); 
    String ns1= ns.ceiling("Yog"); 
    System.out.println(ns1); 

Output==> Yogendra 

답변

1

그들은 같은 방식으로 작동합니다.

반환 요소는 String의 (사전 순) 생성자에 Comparator<String>, 또는 Comparator<String>에 의해 결정된 순서를 제공하지 않는 경우의 자연 순서 것 중 하나 TreeSet의 순서에 의해 결정됩니다 당신은 사용하기로 선택합니다.

2

두 가지 방법에 대한 문서는 here을 참조하십시오.

Number에 대해 String에 대해 설명하는 것이 더 쉽습니다. String은 사용자 정의 Comparator를 treeset의 생성자에 전달하지 않는 한 String 내부적으로 compareTo 메서드를 사용합니다. 이 코드를 고려 : 내가 10을 검색하려면

TreeSet<Integer> set = new TreeSet<Integer>(); 
set.add(1); 
set.add(2); 
set.add(3); 
set.add(4); 
set.add(5); 

Cieling 그래서

Returns the least element in this set greater than or equal to the given element, or null if there is no such element. 

를 말한다, 내가 10보다 요소를 더보고 해달라고 따라서 그것은 나를 null를 돌려줍니다. 내가 공을 검색하려면 내가 4 주면, 그때 내가 정확히 일치를 가지고 있지만 바닥 말한다 동안은 4

를 반환합니다 그래서 1을 반환 있도록 책략, 다음으로 큰 요소는 1 :

Returns the greatest element in this set less than or equal to the given element, or null if there is no such element 

0을 검색하려면 전체 요소가 0보다 작은 요소가 없어서 null이 반환됩니다. 내가 10을 찾고 싶다면 다음 작은 요소는 5이므로 5를 반환합니다. 4를 주면 4를 반환하므로 정확히 일치합니다.

String의 경우 내부적으로 compareTo 메서드를 호출하고 두 문자열을 사전 식으로 비교하면 동작은 정수와 동일합니다. 자바 독으로 당

0
 TreeSet<String> treeSet = new TreeSet<String>(); 
     treeSet.add("aaa"); 
     treeSet.add("ddd"); 
     treeSet.add("bbb"); 
     treeSet.add("ccc"); 

     System.out.println(treeSet.ceiling("aaa")); 
     output : aaa 
     System.out.println(treeSet.ceiling("aab")); 
     output : bbb 
     System.out.println(treeSet.ceiling("bbb")); 
     output : bbb 
     System.out.println(treeSet.ceiling("bbbb")); 
     output : ccc 
     System.out.println(treeSet.ceiling("dddd")); 
     output : null 
     System.out.println(treeSet.floor("aaa")); 

     System.out.println(treeSet.floor("aaa")); 
     output : aaa 
     System.out.println(treeSet.floor("aab")); 
    output : aaa 
    System.out.println(treeSet.floor("bbb")); 
    output : bbb 
    System.out.println(treeSet.floor("bbbb")); 
    output : bbb 
    System.out.println(treeSet.floor("aa")); 
    output : null 

:

Ceiling는 그러한 요소가 존재하지 않는 경우에 이상이 요소보다 크거나 주어진 값과 동일하거나 설정된 널 돌려.

Floor이 세트의 최대 요소를 지정된 요소보다 같거나 작은 값으로 반환합니다. 그러한 요소가 없으면 null을 반환합니다.

관련 문제