数组如何一边遍历一边删除元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组如何一边遍历一边删除元素相关的知识,希望对你有一定的参考价值。

这里一边遍历一边操作是不可取的,操作后集合也变了,之后遍历是改变后的集合。
这里是另外一种方式实现。
import java.util.ArrayList;
import java.util.List;

/**
*
* @author MFX
* @date 2017年10月17日
*/
public class as

public static void main(String[] args)
List a = new ArrayList();
for (int i = 0; i < 10; i++)
a.add(i); // 集合添加元素

System.out.println(a); // 打印 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Object[] b = a.toArray(); // 转化为数组,目的为了的得到集合长度的另外一种表示
System.out.println(b.length);// 数组长度打印
for (int i = 0; i < b.length; i++) // 循环 利用数组得到原来集合的长度
a.remove(0); // 集合操作删除 这里只删除索引为0,操作后集合是变了的,前面删除后后面补位上去

System.out.println(a); // 打印 []
System.out.println(a.size()); // 0

参考技术A for(int i=0;i<resJsonArray.size();i++)
String skuId =resJsonArray.getJSONObject(i).getString("skuId");
//JSONArray移除第i个元素后,i下标所指向的后面的那个元素,直接i+1就会跳过这个元素
if(!originalSkuIdList.contains(skuId))
resJsonArray.remove(i);
i =i -1;

Vector

import java.util.Enumeration;
import java.util.Vector;

public class Vectorfinall {
    public static void main(String[] args) {
//        这个是线程同步的
        Vector v = new Vector();
        //枚举
        //这个遍历就不是用迭代器了额,而是使用枚举,因为是线程安全的,所以可以一边遍历
        //一边添加元素,并且可以直接输出出来, 和LinkedListList不一样
        Enumeration e = v.elements();
        while(e.hasMoreElements())
        {
            e.nextElement();
        }
    }
}

 

以上是关于数组如何一边遍历一边删除元素的主要内容,如果未能解决你的问题,请参考以下文章

HashMap和List遍历方法总结及如何遍历删除

List如何一边遍历,一边删除?

计数排序

java多线程同时向一个数组arraylist添加元素,遍历这个集合

Python为啥不能用列表遍历来删除列表中的相同的元素呢?

Java面试题List如何一边遍历,一边删除?