gpt4 book ai didi

java - NavigableMap.ceiling Entry() 到底是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 19:59:21 26 4
gpt4 key购买 nike

我不明白怎么办NavigableMap.floorEntry()ceiling Entry()工作。

Oracle 只是简单地写了 ceilingEntry(key) :

Returns a key-value mapping associated with the least key greater than or equal to the given key, or null if there is no such key.

通过实验,我了解到如果我定义 NavigableMap使用整数键 ( NavigableMap<Integer, Anything> ), floorEntry(keyArg)ceilingEntry(keyArg)始终返回具有给定参数 (keyArg)* 的条目

我明白 - 它的工作原理类似于 floor and ceiling functions in math :这些函数返回最接近的整数(如果给定的不是整数参数),给定整数参数,它们总是返回这个给定论据

我认为(基于数学中的下限/条目定义)下面的代码片段将返回 "integer" 1.0 , 2.0

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

    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 将简单地返回其参数。

仅当给定参数不存在于映射中(作为键)时,它才会返回任何不同的内容。在这种情况下,ceilingEntry将返回映射中最接近的键(在ceilingEntry的情况下 - 按升序搜索(朝向正无穷大))。

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

最佳答案

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

关于java - NavigableMap.ceiling Entry() 到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48507424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com