NavigableMap.ceiling Entry()究竟是如何工作的?

时间:2018-01-29 18:06:53

标签: java ceiling

我不明白NavigableMap.floorEntry()ceiling Entry()是如何运作的。

Oracle只是写了ceilingEntry(key)

  

返回与最小键关联的键值映射   大于或等于给定密钥 ,或 null 如果没有   键。

实验上我了解到,如果我使用整数键(NavigableMap)定义NavigableMap<Integer, Anything>floorEntry(keyArg)ceilingEntry(keyArg)总是返回给定参数(keyArg)* <的条目/ p>

我理解 - 它的作用类似于floor and ceiling functions in math:那些函数返回最接近的整数(如果不是整数参数),给定整数参数它们总是< strong> 返回给定参数

我认为(基于数学中的 floor / entry 定义)下面的代码段会返回"integer" 1.02.0等等。

Double 2.0不是整数。但是ceilingEntry(keyArg)与Integer键没有用,如果它也不能用于Double键(也返回它的参数键)那么它是如何使用的,它的用途和工作用例是什么?

    NavigableMap<Double, String> m = new TreeMap<>();
    m.put(1.3, "hey");
    m.put(1.5, "hey2");
    m.put(1.62, "hey3"); // not this 
    m.put(1.6, "hey3");     // argument given to ceilingEntry
    m.put(1.68, "hey3"); // not this
    m.put(1.7, "hey4");  // not this
    m.put(2.0, "hey4");  // not this
    m.put(1.0, "hey4");
    m.put(3d, "hey4");   // not this
    m.put(0d, "hey4");
                         // WHAT THEN ???    

    System.out.println(m.ceilingEntry(1.6)); // OUTPUT: 1.6=hey3

    // I guess, to get something different from argument 
    //I shall give something not equal to any key as argument

    System.out.println(m.ceilingEntry(1.601)); // 1.62=hey3

我明白了。无论密钥类型是什么,如果地图中已经存在这样的密钥,ceilingEntry将只返回其参数。

只有当给定的参数不在map(作为键)中时,它才会返回任何不同的东西。在这种情况下,ceilingEntry将返回地图中最近的键(如果是ceilingEntry - 按升序搜索(朝向正无穷大))。

因此它与纯数学floor/ceiling完全不同 - java不寻找最接近的整数,java正在寻找最接近的现有密钥。 Java并不关心,这个最接近的键是整数还是0.000786(最接近0.0007850.7等参数

3 个答案:

答案 0 :(得分:1)

Ceiling就是这么说的:返回与大于或等于给定键的最小键相关联的键值映射,如果没有这样的键则返回null。整数和双打没什么关系。所以,如果我在地图2和5中有2个键,我称之为天花板(3),我将得到5

答案 1 :(得分:1)

floorEntry()ceilingEntry()的工作方式类似于Math.floor()Math.ceiling(),方式如下:

数学:

Integers:
1
2          <-- floor(2.5) = 2
           <-- Key: 2.5
3          <-- ceil(2.5) = 3
4

同样,NavigableMap:

Entries:
Alice
Barry         <-- floor(Bert) = Barry
              <-- Key: Bert
Constance     <-- ceil(Bert) = Constance
Dan

答案 2 :(得分:1)

ceilingEntry(K键) 返回与大于或等于给定键的最小键关联的键 - 值映射,如果没有这样的键,则返回null。

它的工作原理如下

getImageURI