Java如何删除List集合中的元素

您所在的位置:网站首页 java如何删除list中的元素 Java如何删除List集合中的元素

Java如何删除List集合中的元素

2022-05-08 23:19| 来源: 网络整理| 查看: 265

文章目录 1、想象出来的题目2、错误的写法3、正确的写法3.1、倒叙删除法3.2、使用迭代器删除(iterator)(推荐)

1、想象出来的题目

假设有如下数组,现在要求在一个循环内将内容为C开头的都删掉

在这里插入图片描述

2、错误的写法 package com.demo; import java.util.ArrayList; import java.util.List; public class ListRemoveDemo { public static void main(String[] args) { List list = new ArrayList(5); list.add("A"); list.add("B"); list.add("C1"); list.add("C2"); list.add("D"); list.add("E"); System.out.println("删除前的list:" + list.toString()); for (int i = 0; i list.remove(i); } } System.out.println("删除后的list:" + list.toString()); } }

在这里插入图片描述

出问题的原因: 在删除C1后,C2向前进一位,原本的下标位置3变成了2。此时继续循环 i 指向到了下标3,也就是内容为D的值,因此肯定删除不了C2

在这里插入图片描述

3、正确的写法 3.1、倒叙删除法 package com.demo; import java.util.ArrayList; import java.util.List; public class ListRemoveDemo { public static void main(String[] args) { List list = new ArrayList(5); list.add("A"); list.add("B"); list.add("C1"); list.add("C2"); list.add("D"); list.add("E"); System.out.println("删除前的list:" + list.toString()); //注意i的初始值一定为list.size() - 1, 因为这才是数组中的最后一个数据 //判断条件一定是i>=0,不能是i>0, 因为i = 0 也要参与逻辑的运算 for (int i = list.size() - 1; i >= 0; i--) { String str = list.get(i); if (str.startsWith("C")) { list.remove(i); } } System.out.println("删除后的list:" + list.toString()); } }

在这里插入图片描述

从后向前删,解决了下标混乱的问题,所以可以成功

3.2、使用迭代器删除(iterator)(推荐) package com.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListRemoveDemo { public static void main(String[] args) { List list = new ArrayList(5); list.add("A"); list.add("B"); list.add("C1"); list.add("C2"); list.add("D"); list.add("E"); System.out.println("删除前的list:" + list.toString()); Iterator iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); if (str.startsWith("C")) { iterator.remove(); } } System.out.println("删除后的list:" + list.toString()); } }

在这里插入图片描述

Iterator.remove() 方法会在删除当前迭代对象的同时,会保留原来元素的索引。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3