关于ArrayList  LinkedList remove()方法的一点思考,更改或删除抽象数据类型的值
对于基本数据类型和常见的抽象数据类型不做考虑针对的是由程序编写者创建的抽象数据类型通过查看API文档提供了一个removeObject O方法**一. 首先想到的是逐个比较不同节点里的数据,list.remove(index i);**import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num num; this.val val; } } public static void main(String[] args) { ArrayListNode list new ArrayList(); //LinkedListNode list new LinkedList(); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(11,aa)); list.add(new Node(5,aa)); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); for(int i 0; i list.size(); i){ if(list.get(i).num 5 list.get(i).val.equals(aa)){ list.remove(i); } } for(Node c: list){ System.out.print(c.num c.val ); } } }结果删除了num 5val “aa”的所有节点其实这个是不对的有个细节没有考虑到测试一下下面的数据就知道了list.add(new Node(5,aa)); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(10,aa)); list.add(new Node(11,aa));结果for(int i 0; i list.size(); i){ if(list.get(i).num 5 list.get(i).val.equals(aa)){ list.remove(i); /**修改的部分*/ i--; } }结果增加更该节点数据的功能需要在节点类里加入getset方法import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num num; this.val val; } public int getNum() { return num; } public void setNum(int num) { this.num num; } public String getVal() { return val; } public void setVal(String val) { this.val val; } } public static void main(String[] args) { ArrayListNode list new ArrayList(); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(11,aa)); list.add(new Node(5,aa)); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); /** * 更改地方 */ for(int i 0; i list.size(); i){ if(list.get(i).num 5 list.get(i).val.equals(aa)){ list.remove(i); /**更改的地方**/ i--; /**更改地方**/ continue; } if(list.get(i).num 10 list.get(i).val.equals(aa)){ list.get(i).setVal(uu); } } for(Node c: list){ System.out.print(c.num c.val ); } } }**二.删除第一个搜索到的节点list.remove(Object o);import java.util.*; /** * */ public class Main { public static class Node{ int num; String val; private Node(int num, String val){ this.num num; this.val val; } public int getNum() { return num; } public void setNum(int num) { this.num num; } public String getVal() { return val; } public void setVal(String val) { this.val val; } } public static void main(String[] args) { ArrayListNode list new ArrayList(); Node node1 new Node(5,aa); Node node2 new Node(6,bb); Node node3 new Node(7,cc); Node node4 new Node(8,cc); Node node5 new Node(9,aa1); Node node6 new Node(10,cc); list.add(node1); list.add(node2); list.add(node3); list.add(node4); list.add(node5); list.add(node6); list.add(node1); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); /**更改地方*/ list.remove(node1); for (Node node0 : list){ System.out.print(node0.num node0.val ); } } }结果只删除了搜索到的第一个Node1节点**三重写equel();删除所有节点Node**import java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num num; this.val val; } public int getNum() { return num; } public void setNum(int num) { this.num num; } public String getVal() { return val; } public void setVal(String val) { this.val val; } Override public int hashCode() { return super.hashCode(); } Override public boolean equals(Object obj) { if(this obj) return true; if(obj null){ return false; } if(obj instanceof Node){ Node node (Node) obj; if(node.num this.num node.val.equals(this.val)){ return true; } return false; } return false; } } public static void main(String[] args) { ArrayListNode list new ArrayList(); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(5,aa)); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); Node delete new Node(5,aa); for (int i 0; i list.size(); i){ if(delete.equals(list.get(i))) { list.remove(i); i--; } } for (Node node0 : list){ System.out.print(node0.num node0.val ); } System.out.println(); } }结果删除所有符合删除条件的节点**四.不重写equalremove方法失效**import java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num num; this.val val; } // public int getNum() { // return num; // } // // public void setNum(int num) { // this.num num; // } // // public String getVal() { // return val; // } // // public void setVal(String val) { // this.val val; // } // // Override // public int hashCode() { // return super.hashCode(); // } // // Override // public boolean equals(Object obj) { // if(this obj) return true; // if(obj null){ // return false; // } // if(obj instanceof Node){ // Node node (Node) obj; // if(node.num this.num node.val.equals(this.val)){ // return true; // } // return false; // } // return false; // } } public static void main(String[] args) { ArrayListNode list new ArrayList(); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(5,aa)); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); Node delete new Node(5,aa); list.remove(delete); // for (int i 0; i list.size(); i){ // if(delete.equals(list.get(i))) { // list.remove(i); // i--; // } // } for (Node node0 : list){ System.out.print(node0.num node0.val ); } System.out.println(); } }结果重写equalimport java.util.ArrayList; /** * */ public class Main { public static class Node{ private int num; private String val; public Node(int num, String val){ this.num num; this.val val; } public int getNum() { return num; } public void setNum(int num) { this.num num; } public String getVal() { return val; } public void setVal(String val) { this.val val; } Override public int hashCode() { return super.hashCode(); } Override public boolean equals(Object obj) { if(this obj) return true; if(obj null){ return false; } if(obj instanceof Node){ Node node (Node) obj; if(node.num this.num node.val.equals(this.val)){ return true; } return false; } return false; } } public static void main(String[] args) { ArrayListNode list new ArrayList(); list.add(new Node(5,aa)); list.add(new Node(6,aa)); list.add(new Node(7,aa)); list.add(new Node(8,aa)); list.add(new Node(9,aa)); list.add(new Node(10,aa)); list.add(new Node(5,aa)); for(Node c:list){ System.out.print(c.num c.val ); } System.out.println(); Node delete new Node(5,aa); list.remove(delete); // for (int i 0; i list.size(); i){ // if(delete.equals(list.get(i))) { // list.remove(i); // i--; // } // } for (Node node0 : list){ System.out.print(node0.num node0.val ); } System.out.println(); } }结果

相关新闻

JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 14:37:17 阅读更多 →
JAVA新手入门知识

JAVA新手入门知识

Java的创始人:James Gosling 1996年发行JDK(Java Development Kit)1.0 JDK(Java Development Kit)是Java语言的软件开发工具包(SDK) JDK分为三个版本: JavaSE Standard Edition 标准版 JavaME Micro Edition 微型版 JavaEE Enterpise Edition 企业版 J…

2026/7/28 14:37:17 阅读更多 →
JAVA毕设选题推荐:基于 SpringBoot+Vue 的校园安全科普平台 大学生网络安全意识提升反诈宣传系统【附源码、mysql、文档、调试+代码讲解+全bao等】

JAVA毕设选题推荐:基于 SpringBoot+Vue 的校园安全科普平台 大学生网络安全意识提升反诈宣传系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 14:37:17 阅读更多 →

最新新闻

QQ聊天记录本地数据库解密:逆向工程与数据恢复实战指南

QQ聊天记录本地数据库解密:逆向工程与数据恢复实战指南

1. 项目概述:从数据安全视角看QQ聊天记录解密最近在数据安全与取证分析的圈子里,关于即时通讯应用本地数据解密的话题热度一直不减。特别是像QQ这样拥有海量用户、数据格式又历经多次变更的“老牌”应用,其本地数据库的解密需求,常…

2026/7/28 14:47:20 阅读更多 →
CSS3动画与3D

CSS3动画与3D

1、CSS3过渡在CSS3中,可以利用transition属性使元素的某一个属性在指定的时间内从“一个属性值”平滑过渡到“另外一个属性值”,从而实现动画效果。1)transition属性(1)transition-duration属性transition-duration属性…

2026/7/28 14:47:20 阅读更多 →
npm error  enoent:no such file or directory...are-we-there-yet ;  package.json文件和node_modules模相互转化

npm error enoent:no such file or directory...are-we-there-yet ; package.json文件和node_modules模相互转化

vue-cli项目一段时间没有变动,几个星期后继续编辑安装 npm install vue-skeleton-webpack-plugin 插件时报错 npm error enoent:no such file or directory...are-we-there-yet 错误 产生错误的原因:This is still an active issue on Modulus. Ive fo…

2026/7/28 14:47:20 阅读更多 →
字符串

字符串

字符串 存储: 计算机只能够存储二进制 所以存储字符串时 也需要转为二进制 所以就需要有一个对照表 方便将字符和二进制进行转换 这样的内容叫做编码方式 常见的有 ascii unicode 等定义字符串的新的方式var str new String("a");console.log(typeof str…

2026/7/28 14:47:20 阅读更多 →
聚类

聚类

文章目录一、定义二、相似度/距离计算方法总结三、k-means算法1.基本思想2.迭代过程3.简单应用4.总结四、层次聚类五、密度聚类DBSCAN算法1)相关概念2)算法流程一、定义 聚类就是对大量未知标注的数据集,按照数据内在的相似性将数据集划分为…

2026/7/28 14:47:20 阅读更多 →
Grasscutter Tools终极指南:原神私服玩家的可视化管理解决方案

Grasscutter Tools终极指南:原神私服玩家的可视化管理解决方案

Grasscutter Tools终极指南:原神私服玩家的可视化管理解决方案 【免费下载链接】grasscutter-tools A cross-platform client that combines launcher, command generation, and mod management to easily play Grasscutter; 一个结合了启动器、命令生成、MOD管理等…

2026/7/28 14:46:19 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻