似水流年_ft 2011-10-14 11:27
浏览 247
已采纳

关于TreeSet的实现

  TreeSet<String> s = new TreeSet<String>();      //定义并初始化一个String型TreeSet 变量名S
  TreeSet<String>subs = new TreeSet<String>();    //又定义并初始化了一个TreeSet 变量名subs
  s.add("a");        //s中添加字符串"a"
  s.add("b");        //s中添加字符串"b"
  s.add("d");        //s中添加字符串"d"
  s.add("e");        //s中添加字符串"e"

  // 目前s中的元素为a,b,d,e   
  subs = (TreeSet)s.subSet("b",true,"d",true);    //取从b开始到d结束的子集合,包括b,也包括d
  System.out.println(subs + " ");----------------------1
  s.add("9");            //s中添加字符串"9"
  s.add("c2");         //s中添加字符串"c2",目前s中元素为9,a,b,c2,d,e
  s.add("c3");
  TreeSet<String> sub2 = new TreeSet<String>();       //再声明并初始化一个TreeSet
  sub2 = (TreeSet)s.tailSet("c2",true);           //取c2开始到结束的子集合,包括c2
  System.out.println(subs + " " + sub2);//打印一下  ------------2

以上代码为什么在1处输出是[b,d] ,在2处输出[b,c2,c3,d]

TreeSet内部是怎么实现的呢?

  • 写回答

3条回答 默认 最新

  • weixin_42565855 2011-10-14 12:28
    关注

    TreeSet的源码
    [code="java"]
    public NavigableSet subSet(E fromElement, boolean fromInclusive,
    E toElement, boolean toInclusive) {
    return new TreeSet(m.subMap(fromElement, fromInclusive,
    toElement, toInclusive));
    }
    [/code]

    subSet方法返回的是同一个对象的引用,只是元素索引位置不一样。
    所以在原Set中增加元素,会直接影响到subSet中获取的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测