不同之处
- 像add,remove,contains,size等操作,HashSet比TreeSet有更好的性能。HashSet的时间复杂度为O(1),TreeSet的时间复杂度为log(n)。
- HashSet是无序的,TreeSet是有序的,默认为增序。
相同之处
- 都没有重复的元素
- 如果你想要一个有序集合,最好先把元素添加到HashSet中,然后把它转换为TreeSet。而不是创建TreeSet然后往里面添加元素。
Set<String> tset = new TreeSet<String>(hset);
- 它们都是非线程安全的,如果需要同步,需要做一些额外的操作。
HashSet内部主要使用HashMap实现,HashMap不允许有相同的key存在。HashSet的方法很少,而且都很简单,可以看一下。TreeSet内部主要依靠TreeMap来实现,如果对Map有深入研究的话,那么HashSet和TreeSet掌握起来就很轻松。