java从树映射返回相邻键
鉴于以下情况TreeMap
:
Map<Double, Integer> treeMap = new TreeMap<Double, Integer>() {{.
put("52.1", 1);
put("53.4", 2);
put("57.1", 3);
put("59.4", 7);
put("60.2", 11);
put("71.6", 16)}};
对于给定的双精度,返回最接近的n个匹配项(在两个方向上)的最佳方法是什么?例如,n=2和“58.0”将返回53.4、57.1、59.4和60.2
# 1 楼答案
tl;博士
看这个code run live at IdeOne.com
NavigableMap::lowerKey/higherKey
^{} 是一个
NavigableMap
{a3}接口提供了检索相邻键(和条目)的方法
重复这些命令以获取所需数量的相邻键,直到收到
null
比较键
二读时,你似乎没有钥匙。有一个值要与地图中的关键点进行比较
在本例中,获取映射中所有键的} 。返回的集合按排序顺序迭代
Set
NavigableMap
扩展SortedMap
。所以我们可以叫^{对其进行
List
,通过索引访问单个元素现在可以循环排序列表来比较值
NavigableMap::floorKey/ceilingKey
或者,作为dnault commented,我们可以要求
NavigableMap
比较最接近匹配的键值返回小于或等于给定密钥的最大密钥,如果没有这样的密钥,则返回null李>
返回大于或等于给定密钥的最小密钥,如果没有这样的密钥,则返回null李>
示例代码
制作一个输入地图。我们最初使用^{} 是因为它的文字语法很方便。然后我们将un-modifiable map馈送给^{} 的构造函数。我们在这里看到的文字输入碰巧是经过排序的,但这与此无关,因为
TreeMap
构造函数将按键对条目进行排序设定我们希望最接近的目标
获取相邻的关键点,下一个较低,下一个较高
看到这个code run live at IdeOne.com.
注:
List.of
文本语法,现在不需要了李>