NavigableMap:java.lang.IllegalArgumentException:键超出范围

时间:2014-02-01 12:35:31

标签: java exception collections map

你能解释一下这段代码吗?

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)

我无法理解为什么我拥有它。

2 个答案:

答案 0 :(得分:4)

阅读手册:

  

headMap:返回此映射部分的视图,其键严格小于toKey。

myMap2是键小于d的地图。 f高于d。

答案 1 :(得分:3)

来自JavaDoc on TreeMap.headMap

  

如果尝试在其范围之外插入密钥,则返回的地图将抛出IllegalArgumentException