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

今天听了一节Java课,老师讲到集合类着重介绍了其中的Set接口,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;
	}
}

你可能感兴趣的:(java)