java scjp的题目

2025-02-24 09:59:57
推荐回答(3个)
回答1:

这几道题考核的是 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 subSet(E fromElement, boolean fromInclusive,
E toElement, boolean toInclusive) {
return new TreeSet(m.subMap(fromElement, fromInclusive,
toElement, toInclusive));
}
其中 m 为 private transient NavigableMap m;

如果想了解实现,自己去看看 NavigableMap 是内部源码了。

回答2:

第二题:subs只是一个引用,s变了,sub也变了
第三题:如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。

回答3:

题目来自 TestInside SUN 310-065 你自己到官方网站去问去