JAVA容器(三)--Set类

本文探讨了Set与List作为Collections接口实现的区别,重点讲解了Set中的HashSet与TreeSet的特性与应用场景。HashSet适用于需要快速查找且不关心元素顺序的情况,而TreeSet则适用于需要对元素进行排序的应用场景。
     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详细解析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值