免费的ppt成品网站大全,网站建设 电子政务,做网站需要用到那些软件,网站开发用笔记本电脑文章目录 1. 错误的删除2. 正确的方法2.1 倒叙删除2.2 迭代器删除2.3 removeAll() 删除2.4 removeIf() 最简单的删除 3. 总结 1. 错误的删除
在写代码时#xff0c;想将其中的一个元素删除#xff0c;就遍历了 list #xff0c;使用了 remove()#xff0c;发现效果并不是想… 文章目录 1. 错误的删除2. 正确的方法2.1 倒叙删除2.2 迭代器删除2.3 removeAll() 删除2.4 removeIf() 最简单的删除 3. 总结 1. 错误的删除
在写代码时想将其中的一个元素删除就遍历了 list 使用了 remove()发现效果并不是想要的。 ListString list new ArrayList();list.add(aa);list.add(bb);list.add(cc);list.add(abc);list.add(abd);System.out.println(原list JSON.toJSONString(list));ListString list2 new ArrayList();list2.addAll(list);ListString list3 new ArrayList();list3.addAll(list);ListString list4 new ArrayList();list4.addAll(list);ListString list5 new ArrayList();list5.addAll(list);// 有问题的删除for (int i 0; i list.size(); i) {if (list.get(i).startsWith(a)) {list.remove(i);}}System.out.println(过滤后list JSON.toJSONString(list));输出
原list[aa,bb,cc,abc,abd]
过滤后list[bb,cc,abd]元素 abd 并没有过滤出去这是因为使用 remove() 后导致 list 的长度发生了改变后续遍历时abd 的下标取不到了。
2. 正确的方法
2.1 倒叙删除
既然顺序遍历会有问题那么倒叙遍历会怎么样呢 // 倒叙删除for (int i list2.size() - 1; i 0; i--) {if (list2.get(i).startsWith(a)) {list2.remove(i);}}输出
原list2[aa,bb,cc,abc,abd]
过滤后list2[bb,cc]达到预期。
2.2 迭代器删除
当然了常用的还有迭代器删除 // 迭代器删除IteratorString iterator3 list3.iterator();while (iterator3.hasNext()) {if (iterator3.next().startsWith(a)) {iterator3.remove();}}2.3 removeAll() 删除
创建一个删除集合然后 removeAll // 组装删除集合后删除ListString delList new ArrayList();for (int i 0; i list4.size(); i) {if (list4.get(i).startsWith(a)) {delList.add(list4.get(i));}}list4.removeAll(delList);2.4 removeIf() 最简单的删除 // 最简单的删除JDK8及以上list5.removeIf(l - l.startsWith(a));3. 总结
对 List 集合进行删除时可使用迭代器最简单的是使用 List 集合的 removeIf() 全部代码如下
/*** Author: caimeng01* CreateTime: 2024/2/28 17:50* Description: TODO(一句话描述该类的功能)*/
package list;import com.alibaba.fastjson.JSON;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class T2 {public static void main(String[] args) {ListString list new ArrayList();list.add(aa);list.add(bb);list.add(cc);list.add(abc);list.add(abd);System.out.println(原list JSON.toJSONString(list));ListString list2 new ArrayList();list2.addAll(list);ListString list3 new ArrayList();list3.addAll(list);ListString list4 new ArrayList();list4.addAll(list);ListString list5 new ArrayList();list5.addAll(list);// 有问题的删除for (int i 0; i list.size(); i) {if (list.get(i).startsWith(a)) {list.remove(i);}}System.out.println(过滤后list JSON.toJSONString(list));System.out.println(-------------------------);System.out.println(原list2 JSON.toJSONString(list2));// 倒叙删除for (int i list2.size() - 1; i 0; i--) {if (list2.get(i).startsWith(a)) {list2.remove(i);}}System.out.println(过滤后list2 JSON.toJSONString(list2));System.out.println(-------------------------);System.out.println(原list3 JSON.toJSONString(list3));// 迭代器删除IteratorString iterator3 list3.iterator();while (iterator3.hasNext()) {if (iterator3.next().startsWith(a)) {iterator3.remove();}}System.out.println(过滤后list3 JSON.toJSONString(list3));System.out.println(-------------------------);System.out.println(原list4 JSON.toJSONString(list4));// 组装删除集合后删除ListString delList new ArrayList();for (int i 0; i list4.size(); i) {if (list4.get(i).startsWith(a)) {delList.add(list4.get(i));}}list4.removeAll(delList);System.out.println(过滤后list4 JSON.toJSONString(list4));System.out.println(-------------------------);System.out.println(原list5 JSON.toJSONString(list5));// 最简单的删除JDK8及以上list5.removeIf(l - l.startsWith(a));System.out.println(过滤后list5 JSON.toJSONString(list5));}
}
输出
原list[aa,bb,cc,abc,abd]
过滤后list[bb,cc,abd]
-------------------------
原list2[aa,bb,cc,abc,abd]
过滤后list2[bb,cc]
-------------------------
原list3[aa,bb,cc,abc,abd]
过滤后list3[bb,cc]
-------------------------
原list4[aa,bb,cc,abc,abd]
过滤后list4[bb,cc]
-------------------------
原list5[aa,bb,cc,abc,abd]
过滤后list5[bb,cc]图网侵删