删除list中的特定元素

对于动态删除list中的特定元素,一般用linkedList,删除时有以下两种方法。

1. 循环遍历,找到要删除的元素后删除并且减少list长度。如果不减少list长度,那么就仅仅删除了元素,但没改变循环的判定条件(list.size),就会出现数组越界。

for(int i = 0, len = list.size(); i < len; i++){
    if(list.get(i) == 1){
       list.remove(i);
       len--;
       i--;
    }
}

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

        LinkedList<Integer> list = new LinkedList<Integer>();
        list.add(4);
        list.add(2);
        list.add(1);
        list.add(1);
        list.add(2);

        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            int i = iterator.next();
            if(i == 1){
                iterator.remove();
            }
        }

结果:

分析:

由于LinkedList<Integer> list 的元素对象是Integer,所以我们通过list.iterator()得到的就是Iterator<Integer> iterator。通过循环

      while(iterator.hasNext()){
            int i = iterator.next();
            if(i == 1){
                iterator.remove();
            }
        }

看有没有下一个元素,如果有就继续循环,如果没有就跳出循环。在循环里的第一句写

int i = iterator.next();

得到每一个元素对象,因为iterator是Integer对象,所以可以变为int。这里的i就是循环中的得到的对象。

当这个对象的值=1的时候就remove掉。所以原来的list中删除了所有值为1的元素。

        if(i == 1){
                iterator.remove();
            }

全部代码:

package com.kale.list;

import java.util.Iterator;
import java.util.LinkedList;

public class Test {

    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.add(4);
        list.add(2);
        list.add(1);
        list.add(1);
        list.add(2);

        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            int i = iterator.next();
            if(i == 1){
                iterator.remove();
            }
        }
        for (Integer i:list) {
            System.out.println("element = " + i);
        }
    }
}
时间: 2024-10-12 22:07:31

删除list中的特定元素的相关文章

PHP实现删除数组中的特定元素

方法1: 1 <?php 2 $arr1 = array(1,3, 5,7,8); 3 $key = array_search(3, $arr1); 4 if ($key !== false) 5 array_splice($arr1, $key, 1); 6 var_dump($arr1); 7 ?> 返回结果:array(4) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) } 方法2: 1 <?ph

删除数组中满足特定需求的数字

删除数组中满足特定需求的数字 现在你有一个数组,如何删除大于10的元素呢? a=[ 1 5 6 7; 8 12 14 16; 6 3 5 7] %创建3*4的测试数组 x=find(a>10); %得到a中大于10的数的元素下标(5,8,11),这个下标是按列的顺序数的 a(x)=[]; %根据下标,删除a中所有a>10的数 其他公告 函数:diff()可以配合上面的功能使用,寻找满足特定差分 原文地址:https://www.cnblogs.com/thgpddl/p/12685783.ht

删除vector中的偶数元素,删除list中的奇数元素

#include<vector> #include<list> #include<iostream> using namespace std; int main() { vector<int> vec={0,1,1,2,3,5,8,21,55,89}; list<int> li={0,1,1,2,3,5,8,21,55,89}; auto ve=vec.begin(); auto it=li.begin(); while(ve!=vec.end(

C#如何删除数组中的一个元素

C#如何删除数组中的一个元素,剩余的元素组成新数组,数组名不变double[] arr = new double[n];需要删除的是第m+1个数据arr[m]求新数组arr.(新数组arr包含n-1个元素)m,n数值已知 double[] arr = new double[50]; List<double> list = arr.ToList(); list.RemoveAt(5+1); double[] newarr = list.ToArray(); 转:http://www.zybang

Java之——删除ArrayList中的反复元素的2种方法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最经常使用的集合类型之中的一个.它同意灵活加入多个null元素,反复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除反复元素的要求.这篇文章将给出两种从ArrayList中删除反复元素的方法. 方法1:使用HashSet删除ArrayList中反复的元素 在该方法中.我们使用HashSet

删除数组中的重复元素,并返回去重的数组

/*删除数组中的重复元素,并返回去重的数组*/ function delRepeatNum(arr){ var result = []; var middleObj = {}; var temp; for(var i = 0; i < arr.length; i++){ temp = arr[i]; middleObj[temp] = 1; } for(temp in middleObj){ result.push(temp); } return result; }

Java之——删除ArrayList中的重复元素的2种方法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除重复元素的要求.这篇文章将给出两种从ArrayList中删除重复元素的方法. 方法1:使用HashSet删除ArrayList中重复的元素 在该方法中,我们使用HashSet来删除重复

javascript如何删除数组中指定的元素

javascript如何删除数组中指定的元素: 本章节将通过实例简单介绍一下如何删除数组中的元素,希望给需要的朋友带来帮助. 删除数组元素的方式有多种,下面简单介绍一下常用的几种方式: 一.使用delete进行删除: 代码实例如下: var myArray=new Array() myArray[0]="蚂蚁部落"; myArray[1]="青岛"; myArray[2]="奋斗才会有美好的未来"; delete myArray[1] alert

Python 如何优雅的删除列表中的重复元素

假定有一个需求:需要删除列表中的重复元素,有几种实现方法? 方法一:利用Python 集合的特性 去除重复元素,代码如下: list1 = [1,3,5,7,9,7,4,3,6,1] #将列表强制转换为集合,再转换回列表形式 list1=list(set(list1)) print(list1) 方法二:用一个词形容,腾笼换鸟,代码如下: list1 = [1,3,5,7,9,7,4,3,6,1] list2=[] for i in list1: #遍历list1列表中的元素,如果该元素不在li