似水流年_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 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题