每日总结 - Java集合类ArrayList删除特定元素

在这次的项目开发中遇到动态的删除ArrayList中的一些元素。

正确的做法是:

1 for(int i = 0, len = list.size(); i < len; i++){
2     if(list.get(i) == 1){
3        list.remove(i);
4        len--;
5        i--;
6     }
7 }

更好的一个做法:

List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。所以我们还有一个更好的做法是:

1 Iterator<Integer> iterator = list.iterator();
2 while(iterator.hasNext()){
3     int i = iterator.next();
4     if(i == 1){
5         iterator.remove();
6     }
7 }
时间: 2024-10-15 14:45:32

每日总结 - Java集合类ArrayList删除特定元素的相关文章

Java集合类ArrayList循环中删除特定元素

在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常: Exception in thread "main" java.lang.I

java集合类遍历删除方法测试以及使用场景记录

package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; /**

扒一扒系列之开发中常用的Java集合类(ArrayList篇 jdk 1.7)

关于这个系列,因为开发主要用的是java语言,一直想写写java开发中常用的一些类(虽然这才是开始的第三篇>_<),所有就起了“扒一扒”系列.这个系列会有框架,或者其他学到的东西.文章尽量做到简洁,用少的篇幅理顺相关的知识点和使用方法.废话少说,接下来扒一扒ArrayList这个集合类. 一.数据结构 让我们先看下ArrayList所在包的位置,在java.util.ArrayList中(如图1-1),它在jdk中的util中,说明它在开发中比较常用.从它的名字能看出数据结构为一个数组,看一下

Java编程:删除 List 元素的三种正确方法

删除 List 中的元素会产生两个问题: 删除元素后 List 的元素数量会发生变化: 对 List 进行删除操作可能会产生并发问题: 我们通过代码示例演示正确的删除逻辑 package com.ips.list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class A

java集合遍历删除指定元素异常分析总结

在使用集合的过程中,我们经常会有遍历集合元素,删除指定的元素的需求,而对于这种需求我们往往使用会犯些小错误,导致程序抛异常或者与预期结果不对,本人很早之前就遇到过这个坑,当时没注意总结,结果前段时间又遇到了这个问题,因此,总结下遍历集合的同时如何删除集合中指定的元素: 1.错误场景复原 public class ListRemoveTest { public static void main(String[] args) { List<User> users = new ArrayList&l

Java 给ArrayList中的元素去重且顺序不变

import java.util.ArrayList; import java.util.LinkedHashSet; public class MainClass {     public static void main(String[] args)     {         //Constructing An ArrayList ArrayList<String> listWithDuplicateElements = new ArrayList<String>(); li

Effective STL--不同容器删除特定元素的方法

输入迭代器是每个迭代位置智能被读一次的只读迭代器.输出迭代器是每个迭代位置只能被写一次的只写迭代器.输入和输出迭代器被塑造为读和写输入和输出流.前向迭代器有输入和输出迭代器的能力,但是他们可以反复读或写一个位置.它们不支持operator--,所以他们可以高效地向前移动任意次数.所有的标准STL容器都支持比前向迭代器更强大的迭代器.散列容器是前向迭代器,单链表容器也提供前向迭代器 双向迭代器就想前向迭代器,除了他们的后退尅像前进一样容易.标准关联容器都提供双向迭代器.List也有. 随机访问迭代

深入解析 Java集合类ArrayList与Vector的区别

集合类分为两个分支,Collection与Map,其中Collection接口继承了Iterator接口,继承Iterator接口的类可以使用迭代器遍历元素(即Collection接口的类都可以使用),今天我们从相同点.不同点.以及JDK源码等各个方面来深入解析下,底层使用数组实现的两个集合类:ArrayList与Vector的区别与联系 区别与联系: 1.ArrayList出现于jdk1.2,vector出现于1.0.两者底层的数据存储都使用的Object数组实现,因为是数组实现,所以具有查找

数据结构-链表实现删除全部特定元素x

链表节点类定义: 1 template <class T> 2 class SingleList; 3 template <class T> 4 class Node 5 { 6 private: 7 T element; 8 Node<T> *link; 9 friend class SingleList<T>; 10 }; 链表类定义: 1 template <class T> 2 class SingleList :public Linea