首页 > 解决方案 > 如何解决这个 Treeset 程序?

问题描述

这是一个java问题。我只想问为什么9也被添加到原始列表中ts

class Test {
    public static void main(String args[]){
      TreeSet<Integer> ts=new TreeSet<Integer>();
      ts.add(1);
      ts.add(8);
      ts.add(6);
      ts.add(4);
      SortedSet<Integer> ss = ts.subSet(2, 10);
      ss.add(9);
      System.out.println(ts);
      System.out.println(ss);
  }
}

请帮忙!

标签: javacollectionstreeset

解决方案


正如 Alowaniak 在评论中所说,subset仅返回原始集的视图,因此更改会反映到两个集。JavaDoc说:

返回的集合由该集合支持,因此返回集合中的更改会反映在该集合中,反之亦然。

例如,您可以基于子集创建一个新集:

Set<Integer> ss = new TreeSet<Integer>(ts.subSet(2, 10));

以防止这种行为。


推荐阅读