我不明白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.0
,2.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.000785
或0.7
等参数
答案 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