最代码官方
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基础,但是确实是很多初学者容易犯的错误,给大家分享出来,希望能给牛牛们有所帮助。
另外也希望大家都能总结分享平时遇到的有价值的代码,一起学习进步。
猜你喜欢
请下载代码后再发表评论
![最代码相关代码源代码列表](https://static.zuidaima.com/resource/img/heart_ico.png)
![最代码最近下载分享源代码列表](https://static.zuidaima.com/resource/img/heart_ico.png)
![最代码最近浏览分享源代码列表](https://static.zuidaima.com/resource/img/cattle_ico.png)
无名氏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日