HashSet vs. TreeSet vs. LinkedHashSet
HashSet vs. TreeSet vs. LinkedHashSet
种类 | 说明 | 实现 | 时间复杂度 |
---|---|---|---|
HashSet | 最快,无顺序 | 基于Hash table实现 | O(1) |
TreeSet | 排序 | 基于红黑树 | O(logn) |
LinkedSet | 维持插入顺序 | 含有linkedlist的hash table | O(1) |
TreeSet
需要注意的就是,如果是HashSet<Integer>
这样的,如果用Iterator走一遍,会按照大小顺序输出,但是如果是HashSet<SomeObject>
就会报runtime error.
该SomeObject必须实现Comparable接口,比如
class Dog implements Comparable<Dog>{
int size;
public Dog(int s) {
size = s;
}
public String toString() {
return size + "";
}
@Override
public int compareTo(Dog o) {
return size - o.size;
}
}