在java开发中,会经常出现需要删除java ArrayList的某些元素的场景,比如从在线用户列表的ArrayList中删除离线用户的ArrayList,但有的人会出现循环在线用户ArrayList列表然后删除离线用户ArrayList的情况,看着代码确实没什么问题,但其实犯了初学者最容易犯的一个错误,同时循环ArrayList和删除ArrayList的元素。

如下的java代码可以演示发生的一切:package com.arraylist;

import java.util.ArrayList;

/**

* @author www.zuidaima.com

*

*/

public class RemoveItemFromArrayList {

public static void printArrayList(ArrayList list) {

for (String item : list) {

System.out.print(item + " ");

}

System.out.println("");

}

/**

* 循环ArrayList1同时删除item是错误的,会导致指针错乱造成删除元素错误

*

* @param list

* @param list2

*/

public static void removeArrayList1(ArrayList list,

ArrayList list2) {

for (String item : list) {

if (list2.contains(item)) {

list.remove(item);

}

}

}

/**

* 循环ArrayList2同时删除item

*

* @param list

* @param list2

*/

public static void removeArrayList2(ArrayList list,

ArrayList list2) {

for (String item : list2) {

list.remove(item);

}

}

/**

* 调用ArrayList.removeAll方法

*

* @param list

* @param list2

*/

public static void removeArrayList3(ArrayList list,

ArrayList list2) {

list.removeAll(list2);

}

public static ArrayList initOnlineUserArrayList() {

ArrayList onlineUserList = new ArrayList();

onlineUserList.add("zuidaima");

onlineUserList.add("最代码");

onlineUserList.add("javaniu");

return onlineUserList;

}

public static ArrayList initOfflineUserArrayList() {

ArrayList offlineUserList = new ArrayList();

offlineUserList.add("最代码");

offlineUserList.add("javaniu");

return offlineUserList;

}

public static void main(String[] args) {

ArrayList onlineUserList = initOnlineUserArrayList();

ArrayList offlineUserList = initOfflineUserArrayList();

System.out.println("removeArrayList1前:");

printArrayList(onlineUserList);

removeArrayList1(onlineUserList, offlineUserList);

System.out.println("removeArrayList1后:");

printArrayList(onlineUserList);

System.out.println("------------------------");

onlineUserList = initOnlineUserArrayList();

System.out.println("removeArrayList2前:");

printArrayList(onlineUserList);

removeArrayList2(onlineUserList, offlineUserList);

System.out.println("removeArrayList2后:");

printArrayList(onlineUserList);

System.out.println("------------------------");

onlineUserList = initOnlineUserArrayList();

System.out.println("removeArrayList3前:");

printArrayList(onlineUserList);

removeArrayList3(onlineUserList, offlineUserList);

System.out.println("removeArrayList3后:");

printArrayList(onlineUserList);

}

}

其中removeArrayList1方法的执行结果是错误的:

虽然是java基础,但是确实是很多初学者容易犯的错误,给大家分享出来,希望能给牛牛们有所帮助。

另外也希望大家都能总结分享平时遇到的有价值的代码,一起学习进步。

java arraylist删除元素_java集合类ArrayList操作之删除remove某些元素的案例分析相关推荐

  1. java list 删除 遍历_Java list利用遍历进行删除操作3种方法解析

    Java list利用遍历进行删除操作3种方法解析 这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...

  2. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  3. java定义list数组_Java 数组ArrayList语法

    记录一下数组ArrayList的常用语法 1.导入 import java.util.ArrayList; 2.定义数组list ArrayList list = new ArrayList();  ...

  4. java.util.list 赋值_java.util(ArrayList)

    public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serial ...

  5. java c 性能比较_java 中ArrayList与LinkedList性能比较

    java 中ArrayList与LinkedList性能比较 今天看一框架的代码,看到有些 可以使用ArrayList的地方 使用的是 LinkedList,用到的情景是在一个循环里面进行顺序的插入操 ...

  6. java list 内存释放_java集合ArrayList中clear方法内存释放分析

    最近在看ArrayList源码的时候看到了ArrayList的clear方法,源码如下: public void clear() { modCount++; // clear to let GC do ...

  7. queue java 判断重复值_java集合类深入分析之Queue篇(Q,DQ)

    下面是allocateElements方法的实现: Java代码   private void allocateElements(int numElements) { int initialCapac ...

  8. java替换图片中文字_Java 添加、替换、删除Word中的图片

    文档中,可以通过图文混排的方式来增加内容的可读性,相比纯文本文档,在内容展现方式上也更具美观性.在给文档添加图片时,可设置图片的文本环绕方式.旋转角度.图片高度/宽度等:另外,也可对文档中已有的图片实 ...

  9. 元素的样式设置 元素类样式的操作 开关灯效果 获取兄弟元素 当前元素的兄弟元素样式

    元素的样式设置 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

最新文章

  1. 1.4 面向对象的基本概念
  2. 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)
  3. hadoop 2.7.2 + zookeeper 高可用集群部署
  4. django 的请求处理部分----WSGIHandler 源码分析 django1.5.5
  5. ssm把后端数据传到前端_前端传数据到后台分别JSON和STRING接收 AJAX SPRINGBOOT ssm
  6. Intel IPP密码库 IPPCP 2018——第一部分 基础开发指南
  7. 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
  8. Python在Linux环境下Word转PDF
  9. 黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)
  10. 带蒙版的安卓剪辑软件_安卓手机上的视频剪辑软件哪款好?
  11. whith ~ as 用法
  12. 通向Golang的捷径【21. Go 语言的实际应用】
  13. web前端开发常用的10个高端CSS UI开源框架
  14. 过滤器的几种实现方法
  15. 计算机网络——IP地址总述
  16. windows xp系统本地磁盘图标发生变化——5种解决方法
  17. 龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!
  18. 天梯赛习题:福到了(递归打印)
  19. IP地址扫描程序/扫描工具
  20. 网盘进化史就这样(上)——原理简析

热门文章

  1. Luogu2467 SDOI2010 地精部落 DP
  2. 注入攻击-SQL注入和代码注入
  3. 推荐一款好用的jquery弹出层插件——wbox
  4. Input标签牲描述
  5. [WCF]终结点与服务寻址(一)
  6. GdiPlus[40]: 不该忽略的一些基础结构
  7. Silverlight 结合WCF Duplex Service聊天程序出炉
  8. 【信息系统项目管理师】第1章-信息化和信息系统 知识点详细整理
  9. python连接linux后一步一步的操作_Python使用技巧
  10. Node.js+windows