如何在Java中仅移除ArrayList中的指定元素(如Nokia)?
正确移除ArrayList中指定元素的实现方法
你当前代码里的mobiles.clear()会清空整个ArrayList,这显然不符合只移除"Nokia"的需求,下面提供几种可行的解决方案:
方法一:移除第一个匹配的"Nokia"元素
直接使用ArrayList的remove(Object o)方法,该方法会删除集合中第一个与传入对象相等的元素:
// 替换原代码中的mobiles.clear(); mobiles.remove("Nokia"); System.out.println(mobiles);
方法二:批量移除所有"Nokia"元素(避免并发修改异常)
如果集合中存在多个"Nokia"需要全部移除,推荐使用迭代器遍历删除,可避免遍历集合时直接删除元素引发的ConcurrentModificationException:
import java.util.Iterator; // ... 其他代码保持不变 // 替换mobiles.clear(); Iterator<String> iterator = mobiles.iterator(); while (iterator.hasNext()) { String mobile = iterator.next(); if ("Nokia".equals(mobile)) { iterator.remove(); } } System.out.println(mobiles);
方法三:Java 8+ 简洁写法(批量移除)
Java 8及以上版本可以使用removeIf()结合Lambda表达式,一行代码完成批量移除:
// 替换mobiles.clear(); mobiles.removeIf(mobile -> "Nokia".equals(mobile)); System.out.println(mobiles);
完整修改后的代码示例
以方法一为例,完整代码如下:
package arraylisthashmaphashlist; import java.util.ArrayList; public class Arraylisthashmaphashlist { public static void main(String[] args) { ArrayList<String> mobiles = new ArrayList<String>(); mobiles.add("Nokia"); mobiles.add("Apple"); mobiles.add("Samsung"); mobiles.add("Oppo"); System.out.println("移除前的集合:" + mobiles); // 仅移除"Nokia"元素 mobiles.remove("Nokia"); System.out.println("移除后的集合:" + mobiles); } }
内容的提问来源于stack exchange,提问作者Don Randeep
相关产品推荐
相关产品推荐

