☰
自定义对象在Set中比较的正确姿势
2026/10/19 19:16:10 网站建设 项目流程

在今天进行项目开发的过程之中, 当需要去比对某个特定的对象是否会被包含于一个集合类型的 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。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询