天花板,地板将如何在TreeSet of String上运行

dea*_*mer 1 java treeset

我正在阅读TreeSet并发现它很有趣.我有一个问题让我们有一个TreeSetString.在这种情况下,这个Ceilingfloor函数将如何表现.

    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
Run Code Online (Sandbox Code Playgroud)

SMA*_*SMA 5

有关这两种方法的文档,请参见此处.

对于String更容易解释然后对于String,因为String内部将使用compareTo方法,除非您将自定义Comparator传递给treeset的构造函数.考虑以下代码:

TreeSet<Integer> set = new TreeSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
Run Code Online (Sandbox Code Playgroud)

Cieling说

Returns the least element in this set greater than or equal to the given element, or null if there is no such element.
Run Code Online (Sandbox Code Playgroud)

因此,如果我想搜索10,我没有看到任何大于10的元素,因此它将返回null.Wile,如果我想搜索0,下一个更大的元素是1,所以它将返回1.如果我给4,那么我有完全匹配,所以它将返回4.

楼层说:

Returns the greatest element in this set less than or equal to the given element, or null if there is no such element
Run Code Online (Sandbox Code Playgroud)

因此,如果我想搜索0,我在整个集合中看不到任何小于0的元素,因此它将返回null.Wile,如果我想搜索10,下一个较小的元素是5,所以它将返回5.如果我给4,那么我有完全匹配所以它将返回4.

对于String,它将在内部调用compareTo方法并按字典顺序比较两个字符串,其行为与整数相同.