你能解释一下这段代码吗?
TreeMap<String, Integer> myMap = new TreeMap<String, Integer>();
myMap.put("a", 50);
myMap.put("b", 60);
myMap.put("c", 70);
NavigableMap<String, Integer> myMap2 = myMap.headMap("d", true);
myMap.put("e", 90);
myMap2.put("f", 100);//exception here
System.out.println(myMap.size() + " " + myMap2.size());
输出消息:
java.lang.IllegalArgumentException: key out of range
at java.util.TreeMap$NavigableSubMap.put(TreeMap.java:1407)
at SomeClass.main(SomeClass.java:13)
我无法理解为什么我拥有它。
答案 0 :(得分:4)
阅读手册:
headMap:返回此映射部分的视图,其键严格小于toKey。
myMap2是键小于d的地图。 f高于d。
答案 1 :(得分:3)
如果尝试在其范围之外插入密钥,则返回的地图将抛出
IllegalArgumentException
。