如何从ArrayList中删除包含指定整数值的元素
Java ArrayList删除包含指定值元素的实现方案
前提说明
你的ArrayList存储的是字符串格式的交易记录,需要过滤掉所有包含98765432的元素。
方案1:Java 8+ 直接使用removeIf(推荐)
写法最简单,性能也足够满足绝大多数场景:
// 初始化你的ArrayList,这里模拟你给出的原始数据 ArrayList<String> accountList = new ArrayList<>(Arrays.asList( "Savings 12345678 0.60", "Checking 98765432 0.01", "Deposit 98765432 300", "Transfer 98765432 12345678 300" )); // 核心过滤逻辑:删除所有包含98765432的元素 accountList.removeIf(item -> item.contains("98765432")); // 验证输出:最终只保留 [Savings 12345678 0.60] System.out.println(accountList);
方案2:低版本Java用迭代器遍历删除
如果你的项目Java版本低于8,不支持lambda表达式,用迭代器删除避免报错:
ArrayList<String> accountList = new ArrayList<>(Arrays.asList( "Savings 12345678 0.60", "Checking 98765432 0.01", "Deposit 98765432 300", "Transfer 98765432 12345678 300" )); Iterator<String> iterator = accountList.iterator(); while (iterator.hasNext()) { String current = iterator.next(); if (current.contains("98765432")) { iterator.remove(); } } System.out.println(accountList);
注意事项
- 不要用普通for循环正序遍历调用
list.remove()删除元素,会因为元素下标前移导致漏删 - 不要用增强for循环(for-each)删除元素,会抛出
ConcurrentModificationException并发修改异常 - 如果你的ArrayList存储的是自定义实体类,把判断条件改成对应字段的匹配逻辑即可,比如
item.getAccountCode() == 98765432
内容的提问来源于stack exchange,提问作者Simply Bacon
相关产品推荐
相关产品推荐

