这几道题考核的是 TreeSet.subSet(..)方法,查看一下API:
从接口 NavigableSet 复制的描述
返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。如果 fromElement 和 toElement 相等,则返回的 set 为空,除非 fromExclusive 和 toExclusive 都为 true。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。
如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。
而楼上所说的他们是“subs只是一个引用”,
不是, 他们是两个 类,使用System.out.println(subs.equals(s)) ==fasle
让我们来看看源码:
treeset 中的 subSet方法
public NavigableSet
E toElement, boolean toInclusive) {
return new TreeSet
toElement, toInclusive));
}
其中 m 为 private transient NavigableMap
如果想了解实现,自己去看看 NavigableMap 是内部源码了。
第二题:subs只是一个引用,s变了,sub也变了
第三题:如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。
题目来自 TestInside SUN 310-065 你自己到官方网站去问去