单列集合

LinkedList

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 getremove  insert 元素提供了统一的命名方法。


 Set集合

一个不包含重复元素 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1  e2,并且最多包含一个 null 元素。

Set中的常见实现类有两个:

HashSetLinkedHashSet

 

HashSet类实现 Set 接口,由哈希表支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素

 LinkedHashSetHashset的基础上,可以保证存进去的顺序与取出来的顺序一致;

Set集合的特点:

1、只能存一个null元素

2、不能存重复的元素(会自动去除重复的元素)

3、不保证存进去的顺序与取出来的顺序一致;

List集合的特点:

1、可以存多个null元素

2、能存重复的元素

3、能保证存进去的顺序与取出来的顺序一致;

元素唯一性的判断规则

先使用参数对象调用hashCode方法,得到参数对象的hash值,使用hash值与集合中原有对象的hash值,做比较;

如果这两个对象的hash值,不相等,直接认为这两个对象不相等;(性能提升了)

  如果这两个对象的hash值,相等,会继续使用参数对象调用equals方法,再次与集合中的原有对象做比较;

  如果此时equals方法得出true,会认为两个对象相等;

  如果此时equals方法得出false,会认为两个对象不相等;

 

结论:

在自定义的类中,需要重写Object类中的HashCode方法和equals方法即可;

 

Object类中的HashCode方法,是根据对象的地址值生成对象的hash值;

自定义的类中重写HashCode方法后,是根据对象的属性值生成对象的hash值;

 

Object类中的equals方法默认是比较地址值

自定义的类中重写equals方法后,是比较对象的属性值;


ist与Set集合的区别?

List:

它是一个有序的集合(元素存与取的顺序相同)

它可以存储重复的元素

Set:

它是一个无序的集合(元素存与取的顺序可能不同)

它不能存储重复的元素



HashSet:

元素唯一不能重复

底层结构是 哈希表结构

元素的存与取的顺序不能保证一致

如何保证元素的唯一的?

重写hashCode() equals()方法

LinkedHashSet:

元素唯一不能重复

底层结构是 哈希表结构 + 链表结构

元素的存与取的顺序一致






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值