您的位置:首页 > 其它

Set接口的实现类HashSet和TreeSet的区别

2017-04-07 15:10 441 查看
Set接口有两个实现类HashSet和TreeSet。Set是集合的意思,这个接口实现类的特点是集合中不含有重复元素,例如向Set中插入1,1,2,3,这四个数后再输出结果是1,2,3因为Set中重复插入的1被舍弃掉了。HashSet和TreeSet的不同就在于如何判断两个数是否相同的方法上。TreeSet判断两个对象是否相同的方法是Comparable接口中的compareTo()方法(public void int compareTo(Object o)方法不仅可以比较是否相等,还可以比较大小,如果相等则返回0,调用者大于参数则返回正数,否则返回负数),而HashSet用的则是继承自Object类的equals()方法(public
boolean equals(Object o)方法只可以比较是否相等,相等返回true,反之返回false)。所以可以得到添加到TreeSet中的对象必须实现Comparable接口。同时如果使用HashSet则最好重写equals()方法。另外Set集合的输出顺序与输入顺序无关,但是TreeSet由于使用compareTo()方法来进行比较,所以TreeSet集合输出的时候会按照升序的顺序输出存在集合中的对象,下面附上一个演示代码
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class TestSet {
public static void main(String [] args)
{
Set<Integer> hashSet = new HashSet<Integer>();
Set<Integer> treeSet = new TreeSet<Integer>();
hashSet = fillSet(hashSet);
System.out.println(hashSet);
treeSet = fillSet(treeSet);
System.out.println(treeSet);
}
public static Set<Integer> fillSet(Set<Integer> set)
{
while(set.size() < 7)
{
set.add((int)(Math.random()*35+1));
}
return set;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: