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

ArrayList的contains问题

     ArrayList的contains判断居然不准确,根本不是要的结果。关键还是想当然了。

    ArrayList.contains(Object o) 的工作原理是:
遍历列表中的每个元素,通过调用 element.equals(o) 来判断是否存在匹配元素。
如果元素类没有重写 equals(),会默认使用 Object 类的 equals() 实现,而 Object.equals() 本质是比较两个对象的内存地址(即 == 运算)。即使两个对象的内容完全相同(字段值一致),只要是不同的内存对象,contains() 也会返回 false,造成 "判断不准确" 的错觉!

所以核心的关键是要重新equals(),在里面根据关键字来判断(以角色对象为例):

@Override
public boolean equals(Object o) {if (this == o) return true; // 同一对象直接返回trueif (o == null || getClass() != o.getClass()) return false; // 类型不同返回falseRoleInfoBO role = (RoleInfoBO) o;return this.roleId.equals(role.getRoleId()); // 比较字段
}

http://www.xdnf.cn/news/18019.html

相关文章:

  • 机器学习 [白板推导](十二)[卡曼滤波、粒子滤波]
  • 第G7周:Semi-Supervised GAN 理论与实战
  • 【科研绘图系列】R语言绘制雷达图
  • 洛谷B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • 从 MySQL 5.7 迁移到 8.0:别让 SQL 文件 “坑” 了你
  • 《从入门到高可用:2025最新MySQL 8.0全栈速通指南》
  • Linux配置Dante使用的pam验证
  • 【攻防实战】红队攻防之Goby反杀
  • 力扣(LeetCode) ——622. 设计循环队列(C语言)
  • Android Jetpack | Lifecycle
  • 6JSON格式转python并实现数据可视化
  • 储能领域大数据平台的设计中如何使用 Hadoop、Spark、Flink 等组件实现数据采集、清洗、存储及实时 / 离线计算,支持储能系统分析与预测
  • 人工智能中的(特征选择)数据过滤方法和包裹方法
  • 2-3〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸AppScan(WEB扫描)
  • KingbaseES主备读写分离集群安装教程
  • 计算机网络:(十五)TCP拥塞控制与拥塞控制算法深度剖析
  • C++自旋锁的后退机制简介
  • 云原生俱乐部-RH124知识点总结(3)
  • 基于springboot的在线视频教育管理系统设计与实现(源码+文档+部署讲解)
  • 一文了解金融合规
  • 数据结构初阶(17)排序算法——非比较排序(计数排序·动图演示)、排序算法总结
  • Java内功修炼(1)——时光机中的并发革命:从单任务到Java多线程
  • 【论文阅读笔记】--Eurosys--HCache
  • ROS相关的ubuntu基础教程
  • vue3动态的控制表格列的展示简单例子
  • 基于FPGA的实时图像处理系统(1)——SDRAM回环测试
  • XC6SLX45T-2FGG484C Xilinx AMD Spartan-6 FPGA
  • 利用爬虫按图搜索淘宝商品(拍立淘)实战指南
  • vue:vue3 watch 属性
  • FastDeploy2.0:Prometheus3.5.0通过直接采集,进行性能指标分析