javaSE之Set集合下的HashSet和LinkedHashSet,以及Collections集合工具类

Set接口的特点:不允许有重复的元素,没有索引值,不能使用普通for循环 

一、HashSet集合

HashSet集合是一个无序集合,即存储元素和取出元素的顺序可能不一致,底层是一个哈希表结构

哈希值:是一个十进制整数,由系统给出,是一个逻辑地址

在Object类中有一个方法用来获取哈希值:int hashCode(); //返回该对象的哈希值

哈希表结构:数组+链表,将哈希值相同的元素放在一个数组位置,再使用链表或红黑树在此位置上把所有哈希值相同的元素连在一起

Set集合不允许存储重复元素的原理:

Set集合在调用add方法添加元素时,会调用hashCode方法和equals方法来判断元素是否重复,哈希值相同且equals方法返回true时,就不会把这个元素存入集合中

由此,HashSet存储自定义类型元素时必须重写hashCode方法和equals方法

二、LinkedHashSet集合

LinkedHashSet集合由哈希表和双向链表实现,双向链表用来存储元素的顺序,因此该集合具有可预知的迭代顺序,即输入和输出顺序相同

三、Collections集合工具类

Collections位于java.utils包下,用于集合的相关操作,部分方法如下:

上述四个方法均为静态方法,注意使用时用类名Collections调用

1.addAll方法

该方法参数列表中的T...elements代表可变参数,可变参数指的是该参数的类型已确定但个数不确定,一个方法的参数列表中只能有一个可变参数,当有多个参数时可变参数必须在最后一个位置

addAll方法能够向集合中添加任意个元素,关键就在于这个可变参数

2.shuffle方法

该方法参数列表中的List<?> list中的?代表泛型通配符,不知道是用什么类型数据接收时就可以使用泛型通配符,泛型通配符只能用来接受数据,不能用来存储数据

3.默认规则sort方法

将集合中元素按照默认规则排序,默认规则一般指升序

sort方法适用前提:被排序的集合里面存储的元素必须实现Comparable接口,重写其中的compareTo方法定义排序的规则

public int compareTo(类名 对象名){

        return this.变量名-对象名.变量名;    //升序排序,后者减前者则为倒序,0则为相等

}

4.有规则sort方法

按照Comparator指定的规则排序

代码举例:

Collections.sort(list,new Comparator(Integer){

        public int compare(Integer o1,Integer o2){

                return o1-o2;     //升序

        }

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值