JAVA容器(三)--Set类

来源:互联网 发布:淘宝客怎么采集 编辑:程序博客网 时间:2024/06/05 03:10
     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中删除指定集合的所有元素 
2.谈谈HashSet和TreeSet
 HashSet(散列表):在HashSet中没有get()方法,但可以通过iterator()来实现。要注意的是假如要在HasSet中存放一些对象,那么你得重定义hashCode()与equals()二个方法来保不可以存放相同的内容的元素。对于hashcode()所返回的值,hashset用它来计算(通过特定的函数)该对象在内存中的存放位置;后者主要用来判断二个对象的内容是否相等而返回对应的boolen型。
 TreeSet,主要用来对元素进行排序操作,假如要往其中添加对象,则对象得实现
Comparable接口。(假如不要对元素排序,则一般可选用HashSet)。
3.HashSet和TreeSet比较
且看以下实例:
public class SetOfInteger{
    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);
    }
}
如果把红线处代码换成Set intset=new TreeSet();可以看到,使用HashSet来保存元素然后输出,元素是没有顺序的;而用TreeSet来保存对象元素然后输出,元素是按照从小到大的顺序输出的。从这里可以看到他们的差别。
Set中最主要的类是HashSet,后面将对HashSet详细解析。
0 0
原创粉丝点击