HashSet与TreeSet
Posted yuanfei1110111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSet与TreeSet相关的知识,希望对你有一定的参考价值。
HashSet:(去重原理:hashCode,equals)
哈希表实现,数据无序;
不同步;
元素可以为null,但最多只能有一个;
当向HashSet中存入一个元素时,HashSet会调用该对象的hashCode方法来得到该对象的hash值,然后根据hash值决定该对象在HashSet中的存储位置。
TreeSet:(去重原理:compareTo)
二叉树实现,数据自动排序好的,不允许放入null值;
TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态;
TreeSet支持两种排序方式,自然排序和定制排序,其中自然排序为默认排序方式;
类实现Comparable接口,覆写其compareTo方法,如果compareTo方法返回0,说明是重复的,如果是负数,则往前面排,如果是正数,则往后面排。
代码示例:
public static void main(String[] args) {
Set<Person> set = new TreeSet<Person>();
Person p1 = new Person();
Person p2 = new Person();
p1.setAge(1);
p2.setAge(1);
set.add(p1);
set.add(p2);
System.out.println(set2.size());
}
static class Person implements Comparable {
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public int compareTo(Object o) {
return this.age - ((Person)o).getAge();
}
}
}
以上是关于HashSet与TreeSet的主要内容,如果未能解决你的问题,请参考以下文章