自定义对象在Set中比较的正确姿势

发布时间:2026/10/19 19:16:26

自定义对象在Set中比较的正确姿势 在今天进行项目开发的过程之中, 当需要去比对某个特定的对象是否会被包含于一个集合类型的 set 里面的时候, 因为我本人是非常自然地就会想起来这个集合类型所提供的那个比较方法, 所以我原本的计划就是直接地使用它就可以了, 但是, 现实的实际状况却并非像我所预期想象的那样是简单 的, 因为过去在以往的使用案例中我所能够获得的那种成功体验, 其实完全是得益于我那时所使用的那些数据对象它是属于基础级别的 Java 数据类型的这一背景事实, 而如今这一次的情况是, 我所实际投入使用的是由我自己来定义创建的对象实体, 于是乎, 相应的问题便随之而出现并且显现出来了。1 List 集合: 被比较的对象要重写()方法, 调用List中()方法,就是用()方法比较的.List集合这个玩意儿, 它是允许咱们存入那些重复出现的元素的, 当然, 同时也支持放那些空值进去。第二个是集合, 这个集合不允许拥有重复的元素, 不过它允许存在空值, 如果是被对象进行比较的情况, 那么就必须把那个括号方法和另一个括号方法这两个方法进行重写, 两个方法都一定要重写。第3个是集合, 注意里面是不允许存在重复出现的元素的。方法一是这样的: 就是把比较的对象比如学生类型给实现那个接口, 然后通过重写括号这个方法来处理事情, 这一点是不允许有空的值存在的。方法二是关于构造方法的描述, 具体的做法是把接口的实现类作为一个参数传递进去, 这个方式实际上是重写了一些特定的()方法, 它的一个特点是允许向其中传入空值。4个集合这个部分的内容, 是和情况是一样的。第5个部分是关于集合的情况, 这部分的状况和之前的情况是完全相同的。顺便说一下, 对List排序可使用类的sort()方法要使用相应的接口。这段话是从那个别的人地方那边看到的, 心里面有一点点的不太明白。然后低头看了一下那源代码:最后那个条目, 也就是键值对中的key。如果 key 等于 null, 那么就设定为 0, 不然的话, 就执行 hash 函数并对它传 key 的值。从表格那里开始有一个入口,把这个入口记成是e。把数据放进表hash, table.变量e不等于空。e e.next) {k;如果 e 的哈希值是 hash, 并且。((k e.key) key || (key ! null key.(k))))e;null;关于这份 Map 的源代码情况, 原因是因为在 Set 这种数据结构里面, 它是直接依赖于 Map 来进行具体实现的。既然已经搞清楚内部逻辑是需要使用到这个特定方法的, 那我就想问一下, 针对我这里设计出来的那个对象, 我究竟应当去采取什么样方式把那个关键方法重新写一遍呢?这段代码是在展示类和方法的兼容性, 在这个类里面定义了一个整型的变量id, 然后给name这个变量赋的是一个空字符串的值, 接下来有一个注释说明了相同id的对象会具有相同的散列码, 之后是一个返回类型为整型的方法, 在方法体里面返回的是id的这个变量的值, 再后面有一个注释表示必须比较id, 接下来是一个返回类型为布尔类型的方法, 这个方法接收一个参数x, 在方法体里面先拿当前对象的id和传入进来的参数对象x的id进行相等判断, 如果这两个id是相等的就返回true, 如果不相等就返回false。
延伸阅读

更多相关文章

2026/10/19 19:16:26

open-code-review:基于CLI的可审计代码评审工程化实践

1. 这不是又一个“AI写代码”工具——open-code-review 是怎么把 Code Review 做成闭环工程的你有没有过这样的经历:PR 提交后,等了两小时,同事还没点开看一眼;或者好不容易收到一条评论:“这里逻辑有点问题”&#xf…

2026/10/19 19:16:26

多机器人协作信息孤岛破解:从DDS配置到状态共享的完整方案

做多机器人团队的协作系统,最折磨人的往往不是单机算法,而是一群机器人明明在同一张局域网里,却互相“看不见”、也“听不懂”。调度端不知道哪台机器人当前空闲,机器人B对机器人A刚占用的充电路口一无所知,两台车为了…

2026/10/19 19:11:25

OpenClaw:开源重制经典游戏引擎,让老游戏在现代平台重生

如果你玩过那款猫船长主题的经典2D平台游戏,大概率不会忘记那种丝滑的跳跃和刀刀到肉的挥砍手感。可惜这类老游戏都有一个绕不过去的坎:它们在设计时只考虑当年的硬件和系统,放到今天的环境里,往往连窗口都开不出来,就…

2026/10/19 20:27:44

不装SDK,用curl和Python标准库裸调大模型API实战

1. 为什么我要绕开 SDK 直接裸调 API1.1 一个真实的需求场景前段时间接手一个内部工具项目,需要把某个模型服务平台的能力集成到已有的数据处理流水线里。官方文档给的是 Python SDK 方案,装包、初始化客户端、调用方法,三步走看起来挺省事。…

2026/10/19 20:27:44

VSCode Todo Tree:用注释标记打造代码待办清单,告别漏网之鱼

很多开发者在代码里都有这种经历:遇到临时问题,随手敲一行// TODO: 这里待优化,或者标注// FIXME: 逻辑有坑,写完继续往下赶进度。两周以后这个文件被改了七八次,回头想找那行 TODO,全靠翻历史记录&#xf…

2026/10/19 20:27:44

基于TCP的自定义Socket数据帧:短数据传输的粘包拆包与工程实践

做过服务端开发的朋友,一定都遇到过这样的场景:客户端和服务端之间要传的数据量其实不大,可能就是几十个字节的状态信息、一条指令、一个坐标点,但用HTTP去传总觉得太重了,用现成的消息队列又杀鸡用牛刀。这种情况下&a…

2026/10/19 20:27:44

智能引用工具六大分类:从文献管理到引用体检的全流程指南

毕业论文截稿前三天,我还在改参考文献。不是内容有多难,而是那五十多篇文献里,有几篇的卷期页码一直对不上,引用格式从 A 刊标准切到 B 刊标准时,光顺序号就重排了三次。当时我就在想,2025 年了&#xff0c…

2026/10/19 20:27:44

基于SpringBoot+小程序的掌上智慧医疗预约挂号系统设计

1. 项目背景与选题价值每年毕设季都有大量同学私信问同一个问题:想做小程序类的管理系统,又怕撞题、怕做不出来、怕答辩被刁难。我给出的建议向来很直接——B端后台 C端小程序是毕业设计里性价比最高的组合,而这个"基于springboot小程序…

2026/10/19 20:22:43

ResNet跨界分析小说:文本转图像实现情感曲线与风格识别

“把小说丢给图像识别网络去分析?”——听到这个项目名的人,很多第一反应都是这句。说实话,我当初接到这个“基于ResNet的小说分析系统”需求时,也愣了几秒:ResNet是视觉领域的明星结构,小说是纯文本数据&a…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑