Set与List都实现了Collections接口,但他们区别是List中可以有重复对象出现,但是Set里面不能有重复对象。Set里面最常用的是HashSet,而TreeSet只有在排序的时候一般采用到。
1.先说说Set里面常用的方法
public boolean isEmpty() :如果set中不含元素,返回true
public boolean contains(Object o) :如果set包含指定元素,返回true
public Iterator iterator() 返回set中元素的迭代器元素返回没有特定的顺序,
public boolean containsAll(Collection c) :如果set包含指定集合的所有元素,返回true。如果指定集合也是一个set,只有是当前set的子集时,方法返回true
public boolean addAll(Collection c) :如果set中中不存在指定集合的元素,则向set中加入所有元素
public boolean retainAll(Collection c) :只保留set中所含的指定集合的元素(可选操作)。换言之,从set中删除所有指定集合不包含的元素。 如果指定集合也是一个set,那么该操作修改set的效果是使它的值为两个set的交集
public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素
HashSet(散列表):在HashSet中没有get()方法,但可以通过iterator()来实现。要注意的是假如要在HasSet中存放一些对象,那么你得重定义hashCode()与equals()二个方法来保不可以存放相同的内容的元素。对于hashcode()所返回的值,hashset用它来计算(通过特定的函数)该对象在内存中的存放位置;后者主要用来判断二个对象的内容是否相等而返回对应的boolen型。
TreeSet,主要用来对元素进行排序操作,假如要往其中添加对象,则对象得实现Comparable接口。(假如不要对元素排序,则一般可选用HashSet)。
public static void main(String []args){
Random rand=new random(47);
Set
intset=new HashSet();
for(int i=0;i<10000;i++)
intset.add(rand.nextInt(30));
System.out.println(intset);
}
2.谈谈HashSet和TreeSet
3.HashSet和TreeSet比较
且看以下实例:
public class SetOfInteger{
}
如果把红线处代码换成Set
intset=new TreeSet();可以看到,使用HashSet来保存元素然后输出,元素是没有顺序的;而用TreeSet来保存对象元素然后输出,元素是按照从小到大的顺序输出的。从这里可以看到他们的差别。
Set中最主要的类是HashSet,后面将对HashSet详细解析。
本文探讨了Set与List作为Collections接口实现的区别,重点讲解了Set中的HashSet与TreeSet的特性与应用场景。HashSet适用于需要快速查找且不关心元素顺序的情况,而TreeSet则适用于需要对元素进行排序的应用场景。
669

被折叠的 条评论
为什么被折叠?



