关于Java中TreeSet的随想
在使用Java中的Set集合时,比较常用的两个类分别是HashSet与TreeSet。两者都继承了Set集合无重复元素的特点。首先简谈一下两者的区别:
HashSet与TreeSet的区别
1. HashSet不能保证数据有序,TreeSet中数据有序,且可以设置排序规则(使用Comparator接口,实现 int compare(T o1,T o2)方法);
2. HashSet底层基于Hash表存储,TreeSet基于二叉树结构存储(红黑树?);
3. HashSet允许放入null值,TreeSet不行;
4.HashSet基于Hash算法性能显著优于TreeSet,一般情况下只有涉及排序相关操作时才使用TreeSet;
TreeSet 常用方法
// TreeSet构造方法
TreeSet() //默认构造函数。使用该构造函数,TreeSet中的元素按照自然排序进行排列。
TreeSet(Collection<? extends E> collection) // 创建的TreeSet包含collection
TreeSet(Comparator<? super E> comparator) // 指定TreeSet的比较器(排序规则)
TreeSet(SortedSet<E> set) // 使用已有的set创建TreeSet
// 其他常见的函数
boolean add(E object)
boolean addAll(Collection<? extends E> collection)
void