当前位置: 首页 > news >正文

【Java-集合】Set接口

1. 特点:存储多个任意类型的对象,无序、无下标、元素的内容不允许重复。

2. 方法:继承于父接口 Collection 中的方法。

3.实现类:HashSet 

a. 自定义类型的对象存储在HashSet中,如何保证 HashSet元素内容不重复?

i. 覆盖 hashCode方法

原则:必须保证相同内容的对象返回相同的哈希码值,为了提高效率,尽可能的做到,不同内容的

对象返回不同的哈希码值

覆盖准则:通常将所有的属性拼凑为一个 int 类型的结果进行返回。

案例: public int hashCode(){

return this.name.hashCode()+this.age.hashCode(); // age 包装类型

}

ii. 覆盖 equals方法

必须保证相同内容的对象返回true -> 拒绝添加到HashSet集合中。

b. HashSet保证元素不重复执行的原理:对象往HashSet集合中存储时,当前对象调用自身hashCode()方法,获取哈希码值,从而获取对应存储下标,如果存储下标上没有存储任何元素,则当前对象直接存储,但是如果存储下标上已经有存储了其他对象,则调用equals()方法,进行比较对象的内容是否相同,equals方法的结果为true,代表相同内容的对象,则HashSet集合拒绝添加,equals方法结果为false,则代表内容不同的对象,则成功添加到HashSet集合中。

4. 遍历方式:forEach(底层原理迭代器遍历)

a. 语法:for(集合元素数据类型  变量名){

  1. ​​​​​​​                ​​​​​​​        //利用变量名对元素进行操作
    1.             }
    2. b. Set集合forEach遍历原理同List

5. SortedSet:是 Set的子接口,无序、无下标、对元素内容进行排序。

a. 常用的实现类TreeSet

(1)是SortedSet的实现类,SortedSet是Set的子接口

(2)特点:存储Object对象,无序、无下标、元素不重复,可对集合元素自动接序。

(3)遍历方法方式:forEach遍历、自遍历

注意:如果自定类型的对象存储在TreeSet中,需要实现 java.lang.Comparable 接口,同时实现:

compareTo方法,方法中指定排序的规则。compareTo返回值结果如果为0,则TreeSet视为

相同内容的对象。(TreeSet去除重复内容的对象,利用compareTo返回值,结果为0,相同对

)

6.LinkedHashSet:按照添加顺序进行集合元素存储,同时元素内容不允许重复。

遍历方法方式:forEach遍历、自遍历

注意:LinkedHashSet HashSet的子类,所以如果自定类型的对象存储在LinkedHashSet中,

为了保证元素内容不重复,则需要对象对应的类覆盖 hashCode方法 和 equals方法(要求

和父类HashSet一致)

http://www.dtcms.com/a/511453.html

相关文章:

  • 安卓开发- Log日志工具类
  • 微信链接的微网站怎么做的wordpress注册邮件设置密码
  • 国学大师网站谁做的wordpress dante
  • asp.net网站开发 vs2017手机网站分页
  • 传统决策vs AI决策:效率之争的底层逻辑与正确选择
  • SecurityContext在分布式系统(如微服务)中如何传递?有哪些常见方案?
  • MinIO与HDFS对比测试
  • SAP SD销售订单创建接口分享
  • rabbitMQ 的安装和使用
  • 华为Java专业级科目一通过心得
  • [Android] AutoCMD+ v.1.3.5:安卓自动化工具
  • 从养殖场到实验室:小吉快检BL-08plus如何实现禽病检测效率提升300%?——真实案例深度解析
  • 衡阳手机网站建设外发加工费计入什么科目
  • 【JUnit实战3_06】第三章:JUnit 的体系结构(下)
  • 使用injected Provider在remix中调试合约的坑 -- 时间(或者最新块)更新不及时
  • 丽水市莲都建设分局网站湖南微网站开发
  • 笔试-最小组合数
  • Web UI自动化时,通过autoIT的解决window控件
  • 电商网站建设建议网站前端交互功能案例分析
  • Qt——窗口
  • [人工智能-大模型-20]:对比 Copilot 与国产替代方案(如通义灵码、百度Comate)
  • c语言和网站建设的关系平台网站开发可行性分析
  • gcc编译的过程及每个过程的作用
  • ROS2[Humble] -- URDF Tutorial- 02-multipleshapes
  • C#实现二维码和条形码生成与打印
  • C#WPF如何跳转页面
  • 【高并发服务器】八、Poller描述符监控类实现
  • 用vs2013网站开发四川最好的网络优化公司
  • 如何开发一个 IDEA 插件通过 Ollama 调用大模型为方法生成仙侠风格的注释
  • 【论文精读】Latent-Shift:基于时间偏移模块的高效文本生成视频技术