最代码官方
2014-09-14 22:13:51
原证精
java集合类ArrayList操作之删除remove某些元素的案例分析
在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<String> list) { for (String item : list) { System.out.print(item + " "); } System.out.println(""); } /** * 循环ArrayList1同时删除item是错误的,会导致指针错乱造成删除元素错误 * * @param list * @param list2 */ public static void removeArrayList1(ArrayList<String> list, ArrayList<String> list2) { for (String item : list) { if (list2.contains(item)) { list.remove(item); } } } /** * 循环ArrayList2同时删除item * * @param list * @param list2 */ public static void removeArrayList2(ArrayList<String> list, ArrayList<String> list2) { for (String item : list2) { list.remove(item); } } /** * 调用ArrayList.removeAll方法 * * @param list * @param list2 */ public static void removeArrayList3(ArrayList<String> list, ArrayList<String> list2) { list.removeAll(list2); } public static ArrayList<String> initOnlineUserArrayList() { ArrayList<String> onlineUserList = new ArrayList<String>(); onlineUserList.add("zuidaima"); onlineUserList.add("最代码"); onlineUserList.add("javaniu"); return onlineUserList; } public static ArrayList<String> initOfflineUserArrayList() { ArrayList<String> offlineUserList = new ArrayList<String>(); offlineUserList.add("最代码"); offlineUserList.add("javaniu"); return offlineUserList; } public static void main(String[] args) { ArrayList<String> onlineUserList = initOnlineUserArrayList(); ArrayList<String> 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 Map集合类的几种遍历方式
- java ArrayList数据对象按排序值大小倒叙排序
- java对象ArrayList和LinkedList的源码解析及其基本增删改查功能的实现
- java对象ArrayList和LinkedList的源码解析及其基本增删改查功能的实现(优化版本)
- 删除java文件内的注释的java脚本工具类
- java脚本删除指定目录下的所有指定名称的文件夹
- java字符串操作工具类
- java文件操作之移动文件到指定的目录
- java Cookie操作工具类
- java操作linux shell的脚本ShellUtils.java
- java io操作实例代码详解
请下载代码后再发表评论



无名氏111 LV33
2023年5月23日
whfuai LV14
2021年7月5日
忧麦紫 LV18
2021年6月10日
醉code LV17
2020年4月20日
luohaipeng LV23
2019年12月3日
低调人 LV38
2019年8月3日
wxd772113786 LV2
2018年12月30日
zhuchao123 LV3
2018年12月24日
977670 LV3
2018年11月23日
二十八画 LV6
2018年9月13日