SCJP 6.0認證教戰手冊考題.214.抛异常

theoffspring 2009-10-10 11:47:26
 TreeSet<Integer> s = new TreeSet<Integer>();        
TreeSet<Integer> subs = new TreeSet<Integer>();
for(int i=606; i<613; i++)
if(i%2 == 0) s.add(i);
subs = (TreeSet)s.subSet(608, true, 611, true);
subs.add(629); //这行导致的
System.out.println(s + " " + subs);


为什么会抛如下异常:
Exception in thread "main" java.lang.IllegalArgumentException: key out of range
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveofmylife 2009-10-11
  • 打赏
  • 举报
回复
sub.add(Integer)只能add 608到611的整数
subSet方法的api描述,注意最后一行
NavigableSet<E> subSet(E fromElement,
boolean fromInclusive,
E toElement,
boolean toInclusive)返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。如果 fromElement 和 toElement 相等,则返回的 set 为空,除非 fromExclusive 和 toExclusive 都为 true。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException
loveofmylife 2009-10-11
  • 打赏
  • 举报
回复
丫...LZ太不厚道啦,一分不给,太打击了,呵呵...
theoffspring 2009-10-11
  • 打赏
  • 举报
回复
OK,all right,I didn't see the last line in the api doc.
swandragon 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 viszl 的回复:]
sub.add(Integer)只能add 608到611的整数
subSet方法的api描述,注意最后一行
Java codeNavigableSet<E> subSet(E fromElement,boolean fromInclusive,
E toElement,boolean toInclusive)返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。如果 fromElement 和 toElement 相等,则返回的 set 为空,除非 fromExclusive 和 toExclusive 都为true。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException
[/Quote]
很清楚

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧