java arraylist删除元素_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 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方法的执行结果是错误的:

5f44669d9023f819b9cfa4031178418d.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值