Java 中 TreeSet 和 HashSet 的性能比较

本教程解释了  之间的所有差异和共同功能TreeSetHashSet。事实上,这是 java 集合中一个非常流行的问题,例如 ArrayListVectorHashTableHashMap。可能最重要的区别是性能。

TreeSet vs HashSet

1) HashSet 为基本操作提供一致的性能时间,例如: 添加、删除contains尺寸HashSetTreeSet如果你不需要对元素进行排序,这将是一个非常好的选择,因为 HashSet 没有排序系统。树集 保证基本操作的 log(n) 时间 (添加, remove et 包含).

2) HashSet 不保证对项目进行排序。TreeSet 确保元素按升序排序或由 interface Comparable 或您在 接口 Comparator of Java.

3) 遍历性能取决于 HashSetTreeSet 没有影响课程性能的参数。

4) TreeSet 提供了 HashSet : first()last()headSet()tailSet().

5) HashSet 使用方法 equals() 比较两个对象并检测重复对象。TreeSet 使用compareTo()equals() 返回 true,并且 compareTo() 应该返回零.

TreeSet 和HashSet in Java

哈希集 和 树集 有很多共同点,我们一起来看看:

1) 两者都实现了接口 java.util.Set、CE 这意味着它们不允许插入重复的元素。

2) 这两个实现不同步。您可以使用 Collections.synchronizedSet().

3) 如果你想要一个排序的集合,将元素添加到 HashSet然后将它们转换为 树集 而不是创建一个 TreeSet 并添加 elements.

最后,我们可以说使用选择完全取决于您的需求。

HashSet 示例:

import java.util.HashSet;

public class example {

public static void main(String[] args) {

HashSet<字符串>hset = 新的 HashSet<字符串>();

hset.add(1”);
hset.add(3”);
hset.add(2”);
hset.add(5”);

for(String s: hset)
System.out.println(s);
}
}

结果:
3
2
1
5
TreeSet 示例:

import java.util.TreeSet;

public class example {

public static void main(String[] args) {

TreeSet<字符串>tset = 新 TreeSet<字符串>();

tset.add(1”);
tset.add(3”);
tset.add(2”);
tset.add(5”);

for(String s: tset)
System.out.println(s);
}
}

结果:
1
2
3
5
References:
Java中HashSet和TreeSet的区别
Hashset vs Treeset