equals 定義不一致導致list contains錯誤

錯誤代碼如下:

            for (int i=0;i< rows.size();i++) {Row r = rows.get(i);if (r.equals(row)) {assertTrue(rows.contains(row));return;}}

cassertTrue(rows.contains(row));返回了false,看起來很奇怪,此時equals 定義如下:

    public boolean equals(Row row) {if (this.className.equals(row.className)  && this.relationship.equals(row.relationship) &&this.superClassName.equals(row.superClassName)) {return true;}return false;}

debug 發現 list進行contains 判定使用的的 equals 是object 類的equals
在這里插入圖片描述

將 equals 改為

@Overridepublic boolean equals(Object obj) {if (obj instanceof Row) {Row row = (Row) obj;if (this.className.equals(row.className) && this.relationship.equals(row.relationship)&& this.superClassName.equals(row.superClassName)) {return true;}}return false;}

即equals的入參應該是Object。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95684.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python基礎】 20 Rust 與 Python 循環語句完整對比筆記

一、基本循環結構對比 Rust 循環類型 // 1. loop - 無限循環 let mut count 0; loop {count 1;if count > 5 {break;} }// 2. while - 條件循環 let mut number 3; while number ! 0 {println!("{}!", number);number - 1; }// 3. for - 迭代循環 for i in 0..…

Redis 在互聯網高并發場景下的應用--個人總結

在現代互聯網系統中&#xff0c;高并發已經成為常態。無論是電商的秒殺場景、社交平臺的熱點推薦&#xff0c;還是支付接口的風控&#xff0c;系統需要同時應對成千上萬的請求。這時候&#xff0c;Redis 作為一個高性能的內存數據庫&#xff0c;憑借其極快的讀寫速度和豐富的數…

C++筆記之軟件設計原則總結

C++筆記之軟件設計原則總結 code review 文章目錄 C++筆記之軟件設計原則總結 1.軟件設計的六大原則 2.高內聚與低耦合 2.1.高內聚(High Cohesion) 2.2.低耦合(Low Coupling) 2.3.高內聚與低耦合的關系與重要性 3.DRY(Dont Repeat Yourself)原則 3.1.定義 3.2.好處 3.3.示…

ThreadLocal 深度解析:原理、應用場景與最佳實踐

一、ThreadLocal 核心概念與設計哲學?1.1 ThreadLocal 的基本概念?ThreadLocal 是 Java 中提供線程局部變量的類&#xff0c;它允許每個線程創建自己的變量副本&#xff0c;從而實現線程封閉&#xff08;Thread Confinement&#xff09;。簡單來說&#xff0c;ThreadLocal 為…

AMD顯卡運行GPT-OSS全攻略

AMD顯卡運行GPT-OSS全攻略 本文介紹如何在Windows系統上使用AMD顯卡&#xff08;以RX 7900XTX為例&#xff09;運行開源GPT-OSS模型。 前置要求 硬件&#xff1a;AMD顯卡&#xff08;如RX 7900XTX&#xff0c;具體支持型號參考ROCm文檔&#xff09;。軟件&#xff1a; Ollam…

【Sharding-JDBC】?Spring/Spring Boot 集成 Sharding-JDBC,分表策略與 API、YAML 配置實踐?

文章目錄環境準備Spring框架Sharding-JDBC 4.x版本api實現Sharding-JDBC 5.4.x版本yaml實現Springboot框架Sharding-JDBC 5.4.x版本yaml實現分庫、加密、讀寫分離基于yaml的配置示例更多相關內容可查看需求&#xff1a;按月分區&#xff0c;按年分表&#xff0c;找不到對應年份…

單片機和PLC有哪些區別?揭秘單片機MCU的常見應用

單片機&#xff08;MCU&#xff09;和可編程邏輯控制器&#xff08;PLC&#xff09;作為電子控制系統中的兩大核心組件&#xff0c;分別在不同的領域發揮著重要作用。然而&#xff0c;盡管它們都屬于自動化控制領域的關鍵設備&#xff0c;但它們的設計理念、應用場景和性能特點…

ElementUI之Upload 上傳的使用

文章目錄說明SSM使用引入依賴在spring-mvc.xml中加入配置創建上傳工具類AliOssUtil響應工具類ResultJSON編寫controller自動上傳代碼編寫結果如下演示手動上傳前端代碼編寫后端代碼編寫結果演示如下說明 為了方便演示&#xff0c;前后端代碼一起寫了 關于對象存儲請看我另一篇博…

Langchain4j 整合MongoDB 實現會話持久化存儲詳解

目錄 一、前言 二、大模型會話記憶介紹 2.1 AI 大模型會話記憶是什么 2.2 大模型會話記憶常用實現方案 2.3 LangChain4j 會話記憶介紹 三、大模型常用會話存儲數據庫介紹 3.1 常用的會話存儲數據庫 3.2 MongoDB 簡介 3.2.1 MongoDB 是什么 3.3 為什么選擇MongoDB 作為…

SQL 常用 OVER() 窗口函數介紹

1. sum() over() 做組內數據累加在 SQL 中想實現不同分組內數據累加&#xff0c;可以通過 sum() over() PARTITION BY ORDER BY 結合實現。這種方式能同時滿足多維度分組且組內累加的需求&#xff0c;示例如下&#xff1a;假設我們有一張 sales 表&#xff0c;表中存儲著…

OpenRouter:一站式 AI 模型調用平臺,免費暢享千問、DeepSeek 等頂級模型

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 OpenRouter&#xff1a;一站式 AI 模型調用平臺&#xff0c;免費暢享千問、DeepSeek 等頂級模型前…

SpringBoot 整合 Kafka 的實戰指南

引言&#xff1a; 本文總字數&#xff1a;約 9800 字預計閱讀時間&#xff1a;40 分鐘 為什么 Kafka 是高吞吐場景的首選&#xff1f; 在當今的分布式系統中&#xff0c;消息隊列已成為不可或缺的基礎設施。面對不同的業務場景&#xff0c;選擇合適的消息隊列至關重要。目前…

OpenCV 實戰篇——如何測算出任一副圖片中的物體的實際尺寸?傳感器尺寸與像元尺寸的關系?

文章目錄1 如何測算出任一副圖片中的物體的實際尺寸2 傳感器尺寸與像元尺寸的關系3 Max Frame Rate最大幀率4 為什么要進行相機標定?相機標定有何意義?5 基于相機模型的單目測距--普通相機1 如何測算出任一副圖片中的物體的實際尺寸 物體尺寸測量的思路是找一個確定尺寸的物…

Java并發鎖相關

鎖相關 ?1. 什么是可重入鎖&#xff1f;Java 中如何實現&#xff1f;?? ?答?&#xff1a; 可重入鎖允許一個線程多次獲取同一把鎖&#xff08;即遞歸調用時無需重新競爭鎖&#xff09;。 ?關鍵點?&#xff1a;防止死鎖&#xff0c;避免線程因重復請求已持有的鎖而阻塞。…

Pie Menu Editor V1.18.7.exe 怎么安裝?詳細安裝教程(附安裝包)?

??Pie Menu Editor V1.18.7.exe? 是一款用于創建和編輯 ?餅圖菜單&#xff08;Pie Menu&#xff09;?? 的工具軟件&#xff0c;通常用于游戲開發、UI設計、3D建模&#xff08;如 Blender 等&#xff09;、或自定義軟件操作界面。 一、準備工作 ?下載文件? 下載了 ?Pi…

基于Spark的中文文本情感分析系統研究

引言 1.1 研究背景與意義 隨著互聯網的普及和社交媒體的興起、特別是自媒體時代的來臨&#xff0c;網絡文本數據呈現爆炸式增長。這些文本數據蘊含著豐富的用戶情感信息&#xff0c;如何有效地挖掘和利用這些信息&#xff0c;對于了解輿情動態、改進客戶服務、輔助決策分析具…

Simulink子系統、變體子系統及封裝知識

1.引言 文章三相新能源并網系統序阻抗模型——序阻抗分析器IMAnalyzer介紹了一種用于分析和掃描序阻抗的軟件。其中&#xff0c;在序阻抗掃頻操作過程中&#xff0c;用到了一個擾動注入、測量和運算工具【IMtool】&#xff0c;它外表長這樣&#xff1a; 內部長這樣&#xff1a…

高階組件介紹

高階組件約定俗成以with開頭 import React, { useEffect } from react; import { TouchableOpacity, Image, StyleSheet } from react-native;type IReactComponent React.ClassicComponentClass| React.ComponentClass| React.FunctionComponent| React.ForwardRefExoticComp…

C++ STL系列-02.泛型入門

C STL系列-02.泛型入門C中的泛型編程主要通過模板&#xff08;template&#xff09;實現。模板允許我們編寫與類型無關的代碼&#xff0c;是一種將類型作為參數進行編程的方式。在C中&#xff0c;模板分為函數模板和類模板。 1. 函數模板函數模板允許我們定義一個函數&#xff…

高效管理網絡段和端口集合的工具之ipset

目錄 1. 核心命令速查 2. 集合類型 3. 實戰案例&#xff1a;使用 ipset 封禁 IP 案例 1&#xff1a;基礎黑名單封禁&#xff08;手動添加&#xff09; 案例 2&#xff1a;自動過期和解封 案例 3&#xff1a;封禁 IP 和端口組合 案例 4&#xff1a;白名單模式 案例 5&am…