Java集合之Set

本文介绍了Java Set接口的基本概念,强调了其不允许重复元素和无索引的特点,重点讲解了HashSet的原理和使用,以及可变参数的运用。同时讨论了自定义类型元素存储时的equals()和hashCode()重写要求。
摘要由CSDN通过智能技术生成

Set集合

概述:java.util.Set接口是Collection的子接口,与其方法基本一致,相对较为严格。

特点:

  1. 不允许储存重复的元素
  2. 没有索引,不能使用普通for循环
  • 不重复原理:Set集合在调用add方法存储元素时,会先调用其hasCode方法获取元素的哈希值,若无重复现象则存入集合,若有与其哈希值重复的元素再调用equals方法比较两者是否相同,返回false则存入。

实现类

HasSet集合

  • 概述:储存元素不可重复且无序,底层的实现是HasMap集合的支持。根据对象的哈希值确定元素在集合中的储存位置,具有良好的存取和查找性能。

  • 哈希表:数组+链表/红黑树,将哈希值相同的元素分为一组,链接到对应哈希值下方,当链长超过8时用红黑树的方式提高查询速度。

  • HasSet储存自定义类型元素,须在类中重写equals() and hasCode()方法以保证不能储存属性相同的对象元素。(此时属性相同的对象则哈希值相同且equals方法返回true,但地址值不同因为不是同一个对象)

  • LinkedHasSet继承自HasSet,底层多了一条记录元素储存顺序的链表。


可变参数

  • 使用条件:当方法参数列表的数据类型已知,但参数个数不确定。在定义方法时使用。

  • 格式:修饰符 返回值类型 方法名(数据类型...变量名){}

  • 原理:可变参数底层是一个数组,根据传递参数个数的不同,创建不同长度的数组储存这些参数。

  • 注意事项:

    • 一个方法的参数列表只能有一个可变参数
    • 如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。
    • Tips:当参数类型不确定时可写为Object类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值