【发布时间】:2013-08-26 20:44:52
【问题描述】:
我目前正在开发一个程序,我使用TreeSet 来存储唯一键。我正在使用 TreeSet,因为我希望它们被排序。
到目前为止,我一直在制作 TreeSet 对象,并在需要时一次添加一个字符串。
TreeSet set = new TreeSet();
set.add("How");
set.add("Are");
set.add("You");
据说,TreeSet 使用Compareable interface 中的compareTo 方法对字符串进行排序。这意味着每次我向 TreeSet 添加字符串时,它都必须进行排序。
现在我的问题是:创建一个HashSet,然后在将all strings 添加到HashSet 后创建TreeSet 会更有效吗?
TreeSet<String> treeSet = new TreeSet<String>(set);
我的想法是 TreeSet 是否只需要以这种方式进行一次排序。
提前致谢
【问题讨论】:
-
否;你误解了 BST。
-
TreeSet不需要在每次插入字符串时进行排序。更有可能的是,它使用compareTo来确定在遍历树插入新元素时是取左子树还是取右子树。 -
想象你有一个书架,所有的书都按字母顺序排列。如果你买了一本新书,想把它放在书架上合适的地方,你是不是必须把已经在书架上的所有书重新分类?
-
此外,从 HashSet 创建 TreeSet 将简单地一一添加所有键。
-
我明白你的意思,谢谢:)
标签: java hashset compareto treeset