【发布时间】:2019-01-30 14:45:32
【问题描述】:
我正在做一个使用 TreeMap 作为时间索引的项目。
SortedMap<Long, String> expiryIndex = new TreeMap<>();
Long now = System.currentTimeMillis();
expiryIndex.put(now, null);
目标是以后能够创建“旧”项的 TailSet 而无需迭代。 但是,我没有走到这一步,因为我已经得到了一个例外:
SEVERE: Unhandled exception
java.lang.IllegalArgumentException: key out of range
我看不出我在这里做错了什么。
【问题讨论】:
-
请在您访问
TailSet的地方显示代码带有参数 -
您确定您在声明之前和/或之后没有进行任何处理吗?我在本地 Eclipse(JDK 8)上运行你的 sn-p,它运行得很好。
-
我在openjdk 11上运行代码,效果很好
-
根据您在子地图上调用 Map.put() 而不是地图本身的错误。您只能将带有键的元素放在子图的边界内。
-
在java 8中运行代码是可以的,但是TreeMap会抛出新的IllegalArgumentException("key out of range"),能支持更多的代码吗?