List循环删除集合

2023-11-17

    

目录

    

For循环遍历List:

增强For循环遍历List:

迭代器iterator的remove方法:

创建新的对象添加值


For循环遍历List:

删除后list大小发生变化,因此索引发生变化,所以删除的元素不是你想要的

解决办法:

①倒着遍历list集合;

public static void main(String[] args) {
    List<String> list = new ArrayList<>(5);
    list.add("1S");
    list.add("2S");
    list.add("3S");
    list.add("4S");
    list.add("5S");
    for (int i = list.size() -1; i >= 0; i--) {
        list.remove(i);
    }
    System.out.println(list);

}

②修改索引值

public static void main(String[] args) {
    List<String> list = new ArrayList<>(5);
    list.add("1S");
    list.add("2S");
    list.add("3S");
    list.add("4S");
    list.add("5S");
    for (int i = 0; i < list.size(); i++) {
        list.remove(i);
        i--;
    }
    System.out.println(list);
}

 

 

增强For循环遍历List:

删除后报错ConcurrentModificationException(
        解决办法:删除完成后直接break,
        原因:foreach方法遍历遍历元素的时候生成迭代器iterator,再生成iterator的时候,会保存一个expectedModCount参数,这是生成迭代器时list修改的次数,如果删除的话,modCount和exceptedModCount不一致)

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("1S");
    list.add("2S");
    list.add("3S");
    list.add("4S");
    list.add("5S");
    for (String str : list) {
        list.remove(str);
        break;
    }
    System.out.println(list);
}

    

 

迭代器iterator的remove方法:

直接删除(原因:给exceptedModCount重新复制)


创建新的对象添加值:

List<String> newList = new ArrayList<>();
//不满足条件的过滤,满足条件的添加到新的list中

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

List循环删除集合 的相关文章

随机推荐

  • Scratch和机器人编程有什么区别?

    Scratch编程和机器人编程的区别就是 Scratch是面向青少年的图形化简易编程软件 孩子们可以通过不同功能的指令方块组合 创作出交互式故事 动画 游戏 音乐 艺术和科学计算等作品 而机器人编程则是以机器人为载体 通过程序指令控制完成机
  • MySQL中的编码问题Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column '字段名' at row 1 问题的解决方法

    今天往mysql数据库中添加数据时出现了如标题的错误 因为刚刚把数据库版本从8 0换成了5 5 27版本 于是网上搜了一下答案 搜了很多修改了都没用 最后终于成功了之后总结了一下 一 修改mysql数据库的编码为uft8mb4 修改mysq
  • 特征工程介绍

    特征工程基础知识 文章目录 1 特征工程是什么 2 数据预处理 2 1 无量纲化 2 1 1 标准化 2 1 2 区间缩放法 2 1 3 归一化 2 2 特征二值化 2 3 独热编码 2 4 缺失值计算 3 特征选择 3 1 Filter
  • Python -- Numpy:添加一列

    np insert 指定位置添加一列 a np arange 12 reshsape 3 4 print a array 0 1 2 3 4 5 6 7 8 9 10 11 b np ones 3 print b array 1 1 1 n
  • IDEA远程调试

    1 概述 原理 本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信 传递调试指令和调试信息 被调试程序的远程虚拟机 作为 Debug 服务端 监听 Debug 调试指令 jdwp是Java Debug Wire
  • 23062day4

    制作一个简易圆形时钟 头文件 ifndef WIDGET H define WIDGET H include
  • 大话水声通信技术---(BFSK仿真)

    在之前的理论篇中 笔者梳理了水声通信相关的理论知识体系 本次笔者给出了一套基于BFSK的水声通信系统 该系统已经在实际的硬件中得到了验证 通信声呐仿真BPSK方式 几点假设 1 基于射线声学理论 2 几何衰减按球面波传播衰减规律衰减 不考虑
  • python报错之paramiko.ssh_exception.SSHException: EOF during negotiation

    方案1 此方法引自https www cnblogs com lidq p 12030662 html 查找sftp server的位置 find name sftp server 然后查看ssh的配置文件 vim etc ssh sshd
  • matplotlib画二维分布图

    假设我们有一组二维数据 x y label 3 542485 1 977398 1 3 018896 2 556416 1 7 551510 1 580030 1 2 114999 0 004466 1 8 127113 1 274372
  • 51单片机—使用PWM对直流电机调速

    文章目录 什么是PWM PWM是怎么对直流电机进行调速的 通过定时器中断实现PWM调速 上代码 什么是PWM PWM 脉宽调制 是靠改变脉冲宽度来控制输出电压 通过改变周期来控制其输出频率 脉冲可以理解为是IO口的一次高低电平改变 PWM是
  • echarts坐标轴上的刻度竖着排列 并且超出隐藏

    首先 把坐标轴上的刻度竖着排列 大家第一反应肯定想到的是 echarts里的rotate属性 在xAxis里设置axisLabel rotate就搞定了 但是会发现这样垂直展示的话 可能不是很美观 所以就找到了格式器formatter 变成
  • docker构建部署node后端项目

    文章目录 简介 详细过程 1 将node项目打包成 tar 2 将node项目 tar打包成 tar gz 3 构建Dockerfile文件 4 执行命令打包镜像 简介 本次主要想记录一下docker部署node后端项目的过程 方便后面如果
  • CMU15-213 课程笔记 01-课程概览

    知识点 这门课的目的 深入理解当你执行代码时 计算机在做什么 LLDB 基于 LLVM 的命令行调试器 类似 GBD 内存引用 Bug typedef struct int a 2 double d struct t double fun
  • 如何确定一次完整的请求过程——服务链路跟踪

    微服务体系下 一个请求会调用多个服务 整个请求就会形成一个调用链 普通的日志输出是无法将整个体系串联起来 调用过程中某一个节点出现异常 定位排查难度系数增高 这种情况下就需要一个组件 来分析系统性能 展现调用链路 以便出现故障时快速定位并解
  • 【笔记整理】通信原理第四章复习——数字基带传输

    4 1 引言 数字基带信号 数字信号 补充 基带信号 指未经调制的信号 特征是其频谱从零频率或很低频率开始 占据较宽的频带 基带在传输前 必须经过一些处理或某些变换 比如码型变换 波形变换和频谱变换 才能送入信道中传输 处理或变换是为了使信
  • Django-rest-framework框架

    目录 一 Web应用模式 1 1 前后端不分离 二 API接口 三 接口测试工具 Postman 四 RESTful API规范 4 1 数据的安全保障 4 2 接口特征表现 4 3 多数据版本共存 4 4 数据即是资源 均使用名词 可复数
  • VHDL语言实现8位LED流水灯

    VHDL语言实现8位LED流水灯 包含对50MHz时钟信号分频产生1Hz信号 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity l
  • 1、mos管的工作原理

    文章目录 一 导体 绝缘体 半导体 二 半导体的制作 掺杂 pn结 半导体的单向导电性 三 mos管的工作原理 源极 栅极和漏极 nmos和pmos 电路符号 四 总结 一 导体 绝缘体 半导体 导体 能够导电的介质 绝缘体 不能导电的介质
  • 程序猿眼中的协议:TCP / IP 五层网络模型

    哈喽 大家好 我是你们的老朋友 保护小周 本期为大家带来的是 网络基础原理中的 TCP IP 五层网络模型 主要从协议的概念 网络模型 数据分层传输的流程 几个方面讲解 看完之后可以轻松的理解数据是如何在网络中传输的 确定不来看看嘛 更多精
  • List循环删除集合

    目录 For循环遍历List 增强For循环遍历List 迭代器iterator的remove方法 创建新的对象添加值 For循环遍历List 删除后list大小发生变化 因此索引发生变化 所以删除的元素不是你想要的 解决办法 倒着遍历li