gpt4 book ai didi

java - TreeMap.putAll 给出的键超出范围

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

在我的代码中,

            SortedMap<Integer, Data> subMap;

subMap = (db.getDataMap()).tailMap(previousServer);

SortedMap<Integer, Data> temp = (db.getDataMap()).headMap(presentServer);
//System.out.println(subMap);
//System.out.println(temp);
subMap.putAll(temp);

假设tailMap()没有返回任何内容,因此subMap是一个空Map,但temp只有很少的键值对。因此,通过 subMap.putAll(temp) 将 temp 添加到 subMap 会给我“键超出范围”。但如果我执行 temp.putAll(subMap) 那么一切都会正常工作。

这可能是什么原因?

最佳答案

参见http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#tailMap(K)

注意:有几种方法返回具有受限键范围的子图。这些范围是半开放的,也就是说,它们包括其低端点,但不包括其高端点(如果适用)。如果您需要一个封闭范围(包括两个端点),并且键类型允许计算给定键的后继者,则只需请求从 lowEndpoint 到 successor(highEndpoint) 的子范围。例如,假设 m 是一个映射,其键是字符串。以下惯用法获取包含 m 中所有键值映射的 View ,这些映射的键在 low 和 high 之间(含):

SortedMap<String, V> sub = m.subMap(low, high+"\0");

类似的技术可用于生成开放范围(不包含端点)。下面的惯用法获取一个 View ,其中包含 m 中所有键在 low 和 high 之间的键值映射,不包括:

SortedMap<String, V> sub = m.subMap(low+"\0", high);

关于java - TreeMap.putAll 给出的键超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25921510/

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