编程语言
首页 > 编程语言> > java – 查找比SortedMap更大的第一个值

java – 查找比SortedMap更大的第一个值

作者:互联网

我想知道有什么更好的方法可以在大型SortedMap中找到大于输入值的第一个值,而不是在下面的示例中循环遍历所有值.或者,如果SortedMap是用于此的最佳结构.

这可以通过谷歌收藏来实现吗?
提前致谢

public class mapTest {
public static void main(String[] args) {

SortedMap<Double, Object> sortedMap = new TreeMap<Double, Object>();
    sortedMap.put(30d, "lala");     
    sortedMap.put(10d, "foo");
    sortedMap.put(25d, "bar");
    System.out.println("result: " + findFirstValueGreaterThan(sortedMap, 28d));
}

public static Object findFirstValueGreaterThan(SortedMap<Double, Object> sortedMap, Double value) {
    for (Entry<Double, Object> entry : sortedMap.entrySet()) {
        if (entry.getKey() > value) {
            // return first value with a key greater than the inputted value
            return entry.getValue();
        }
    }
    return null;
}
}

解决方法:

一切都在文档中:

ceilingKey(K key)
Returns the least key greater than or equal to the given key, or null if there is no such key.

所以,

findFirstValueGreaterThan(sortedMap, 28d)

应该

sortedMap.ceilingKey(28d)

但要注意“大于”和“大于或等于”之间的差异.

标签:java,guava,sortedmap
来源: https://codeday.me/bug/20190726/1545324.html