set集合

set集合中的对象不按照特定的方式排序,只是简单的吧对象加入集合之中,但是set集合不能包含重复对象。set集合由set接口和set接口实现类组成,set接口继承了collection接口所有方法。

注意,set只有一个约束条件,就是不能存在重复对象

Set常用集合:
    Set中方法与Collection一致。

    (1)HashSet:内部数据结构是哈希表,是不同步的。
        Set集合中元素都必须是唯一的,HashSet作为其子类也需保证元素的唯一性。
        判断元素唯一性的方式:
           通过存储对象(元素)的hashCode和equals方法来完成对象唯一性的。
           如果对象的hashCode值不同,那么不用调用equals方法就会将对象直接存储到集合中;
           如果对象的hashCode值相同,那么需调用equals方法判断返回值是否为true,
            若为false, 则视为不同元素,就会直接存储;
            若为true, 则视为相同元素,不会存储。
        
     PS:如果要使用HashSet集合存储元素,该元素的类必须覆盖hashCode方法和equals方法。
     一般情况下,如果定义的类会产生很多对象,通常都需要覆盖equals,hashCode方法。建立对象判断是否相同的依据。
    
    (2)TreeSet:保证元素唯一性的同时可以对内部元素进行排序,是不同步的。
        判断元素唯一性的方式:
           根据比较方法的返回结果是否为0,如果为0视为相同元素,不存;如果非0视为不同元素,则存。
        TreeSet对元素的排序有两种方式:
            方式一:使元素(对象)对应的类实现Comparable接口,覆盖compareTo方法。这样元素自身具有比较功能。
            方式二:使TreeSet集合自身具有比较功能,定义一个类实现Comparable接口覆盖其compareTo方法。(相当于自定义了一个比较器)
                将该类对象作为参数传递给TreeSet集合的构造函数。(TreeSet(Comparator<? super E> c) )

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值