Java List 元素删除陷阱

卡门涡街可视化实战:从网格加密策略到动画后处理技巧 本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。 阅读详情

上篇文章写到了对文件进行批量上传,其中遇到一个问题,就是针对用户上传来的文件进行筛选删除

错误的写法:

/** 排除有误的图片 **/
List<MultipartFile> files = userBean.getNewPhoto();
for(MultipartFile file : files){
	//名字是否合适
	if(file.getName() == null && file.getName().equals("")){
		files.remove(file);
		continue;
	}
	//是否是图片
	boolean isImg = FileUtil.filterType(file.getContentType());
	if (!isImg) {
		files.remove(file);
		continue;
	}
	//是否大小合适
	boolean isSuitableSize = FileUtil.filterFileSize(file);
	if (!isSuitableSize) {
		files.remove(file);
		continue;
	}
}
咋一看,好像没什么错,其实仔细一想,发现问题,每次删除完之后,那么List就少1,所以会出现错误


正确的写法:

/** 排除有误的图片 **/
List<MultipartFile> files = userBean.getNewPhoto();
Iterator<MultipartFile> iter= files.iterator();
while (iter.hasNext()){
	MultipartFile file= iter.next();
	//名字是否合适
	if(file.getName() == null && file.getName().equals("")){
		iter.remove();
		continue;
	}
	//是否是图片
	boolean isImg = FileUtil.filterType(file.getContentType());
	if (!isImg) {
		iter.remove();
		continue;
	}
	//是否大小合适
	boolean isSuitableSize = FileUtil.filterFileSize(file);
	if (!isSuitableSize) {
		iter.remove();
		continue;
	}
}

里面的小方法:

/**
 * 过滤文件
 * 
 * @param types
 * @return
 */
public static boolean filterType(String type) {
	for (String temp : FinalValues.userRegisterAllowFileTypeList) {
		if (temp.equals(type)){
			return true;
		}
	}
	return false;
}


/**
 * 过滤图片的大小
 * @param multipartFile
 * @return
 */
public static boolean filterFileSize(MultipartFile multipartFile) {
	if(multipartFile.getSize() <0 || multipartFile.getSize() > FinalValues.MAX_ALBUM_PHOTO_SIZE){
		return false;
	}
	return true;
}
C++坦克大战源代码 【代码】C++坦克大战源代码。 阅读详情

相关推荐

rfid标签技术原理

奇怪的是,RFID标签技术原理的深入剖析不仅揭示了其背后的奥秘,也让我们更加全面地认识到这一技术在数字化转型中的重要性和潜力。随着技术的不断进步和应用场景的不断拓展,RFID标签将在更多领域发挥重要作用,为物联网、智能制造等领域的发展注入新的活力。这意味着在一个读写器的覆盖范围内,可以同时读取多个RFID标签的数据,大大提高了数据收集的速度和效率。:RFID标签的“大脑”,负责存储和处理数据。芯片内部集成了存储器、控制逻辑和射频接口等电路,能够接收来自读写器的射频信号,执行相应的数据处理和通信任务。

x3088的博客 2159

list<对象> 的过滤

经常要对集合中的数据进行过滤,我目前常用的方法有两种: 最简化问题,假设问题 list 是学生的id集合,要过滤掉id为1的学生 List<String> studentIds= new ArrayList<>(); studentIds.add("1"); studentIds.add("2"); studentIds.add("3"); 1 .使用迭代器删除方法 System.out.println(studentIds); //[1,

nsnsttn的博客 3701

2024年五大革新图像分割模型解析:架构创新与实战应用指南

本文深入解析2024年五大革新图像分割模型,包括SAM2、Mask2Former、DINOv2和Swin Transformer等,探讨其架构创新与实战应用。从多尺度处理、提示交互到自监督学习,这些模型在精度提升、效率优化和交互增强方面取得突破,广泛应用于医疗影像、工业质检和智慧城市等领域。

hadoop5ranger的博客 894

JAVA之List过滤

JAVA之List过滤

風林火山zyw的博客 9589

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2910

因果推断(二):因果推断涉及的ITE、ATE、CATE等效应

因果效应也称为**处理效应(Treatment effect)**是用于评判干预与否的结果差异的指标(处理变量对结果变量的影响)。比如在接受治疗组中,如果这些人不接受治疗,这组人接受治疗和不接受治疗的效应差异是多少。定义为实验组中每个个体的处理效应差异,比如一个个体在接收治疗和不接受治疗的两个处理方式的健康程度得分的差。但是一个人因为不可能。比如我们想探究接受治疗的男性用户和不接受治疗的男性用户的平均效果差异就是CATE。前面说ITE是无法观测的,是因为一个人不能同时接受治疗又不接受治疗,这里关键的就是。

Y1n的博客 3713

list集合去重、过滤、分组、获取数据、求最值、合并、排序、跳数据和遍历

list集合去重、过滤、分组、获取数据、求最值、合并、排序、跳数据和遍历

qq_42846807的博客 5646

在WPS/Office中免费使用AI,快速提升办公效率!​

《免费解锁WPS/Office AI办公神器教程》摘要: 本教程详解如何通过第三方插件OfficeAI免费实现WPS/Office智能办公,突破官方付费限制。从安全设置到安装配置,手把手教学,涵盖文档生成、PPT美化、Excel图表等核心功能。关键优势包括零成本、全场景支持及云端/本地双模式切换,并附常见问题解决方案。注意需使用WPS 2024+版本,安装时需临时关闭杀毒软件。教程强调工具来源合法性,建议商用购买正版授权。(149字)

杜哥无敌的博客 2303

[进阶] list 过滤 stream 的lambda进阶操作, 这一篇就够了

/1. 创建基础数据User user1 = new User("张三", 33, "13345678913", new Date());User user2 = new User("李四", 44, "13345678914", new Date());User user3 = new User("王五", 55, "13345678915", new Date());User user4 = new User("李六", 55, "13345678916", new Date());

pingzhuyan的博客 1868

Java实战:绿盾加密文件批量解密工具Ldterm的实现与优化

本文详细介绍了基于Java开发的绿盾加密文件批量解密工具Ldterm的实现与优化过程。通过分析绿盾加密机制,结合Java流处理能力,实现了高效的文件解密方案,并分享了多线程处理、内存优化等性能提升技巧,适用于企业级数据迁移与备份场景。

weixin_29314405的博客 490

第3版•系统集成项目管理工程师(中级) │ 第6章 数据工程

🥏第3版•系统集成项目管理工程师(中级) │ 第6章 数据工程

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

JAVA8 List的去重、过滤、映射(map)、分组、统计(sum、max、min、avg)、分页

目录 1.实现List对象集合的简单去重(distinct()) 2.实现List集合的根据属性(name)去重 3.实现List对象集合的简单过滤(过滤为 null 的对象) 4.实现List对象集合中获取其中某一属性(weight)的List集合 5.实现List对象集合中根据对象(Apple)的某一属性(color)进行分组 6.实现List对象集合中求和、最大、最小、平均的统计...

ACGkaka的博客 2万+

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

【深度学习|地学应用】MODIS AOD产品和HYSPLIT模型的局限性和不确定性?

985小水博的摸鱼日常 462

Java List 删除元素的陷阱

List 删除元素,常常第一反应就是for循环,通过if条件判断,调用List.remove(i) 或者 List.remove(Object) 的方式来完成移除集合上的元素。 public static void main(String[] args) { List<String> list = new ArrayList(2) { { add("a"); add("b"); } }; fo

weixin_46521063的博客 904

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java开发中的常见陷阱:List遍历删除元素你踩过吗

写代码时,碰到“遍历删除”的需求,不妨先花10秒钟想清楚:是单线程还是多线程?数据规模多大?删除后还需要后面的元素吗?还是直接重新建一个集合?有没有更简单的函数式替代(removeIf / collect)?不要觉得这类问题简单就掉以轻心。很多线上事故的根源,就是这种不起眼的细节。我见过有人因为for-each删除抛异常,在catch里吞掉异常继续执行,导致数据不一致。也见过有人为了图省事,在普通for循环中加上i--来补偿索引位移,最后代码逻辑混乱到无法维护。理解modCount。

qq_35974860的博客 20

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JAVA中List删除元素部分陷阱问题

List中删除元素陷阱: 1.不能再用迭代器遍历的时候,直接使用list中的remove,这样破坏了结构。 2.如果遍历不使用迭代器(直接用size()控制循环),删除主要i的变化。 import java.lang.reflect.Array; import java.util.*; import java.util.Scanner; import java.util.concurrent

wangylhd的博客 609

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

6-2 Java集合实战:List元素删除的陷阱与高效方法 (20分) 深度解析

本文深度解析Java集合中List元素删除的常见陷阱与高效方法,包括迭代器删除、倒序循环、removeIf和subList.clear等方案。通过实战案例和性能对比,帮助开发者避免ConcurrentModificationException异常,提升代码效率。特别适合Java开发者在处理集合操作时参考。

dggnqzt6462的博客 413

java set遍历删除元素_Java 集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素。不知不觉中,有些陷阱,不知你有没有犯。1. 一、漏网之鱼-for循环递增下标方式遍历集合,并删除元素如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素。说那么说可能也说不清楚,看以下示例:import java.util.ArrayList;import java.util.List;pu...

weixin_42509236的博客 622

Java 集合(List、Set)遍历、判断、删除元素时的小陷阱

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992我们一起学Java! 开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素。 不知不觉中,...

chuifuhuo6864的博客 235

Java List的remove()方法陷阱

Java的List在删除元素时,一般会用list.remove(o)/remove(i)方法。在使用时,容易触碰陷阱,得到意想不到的结果。

Tany的博客 7万+

【Java】集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素。 不知不觉中,有些陷阱,不知你有没有犯。 一、漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素。说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import ...

dongjizheng9270的博客 223

java中 list集合删除元素陷阱(向前追溯)

for(int i = 0;i&lt;list.size();i++){    list.remove(i--);}i--;向前追溯!!!切记!!!

qq_35628002的博客 313

《Java陷阱:为什么删除新List的元素,原List也被修改了?—— 深入理解引用赋值》

在Java中,直接使用List<Object> finalValues = values赋值并不会创建新列表,而是复制了引用,导致两个变量指向同一内存对象。因此修改其中一个列表会影响另一个。要真正复制列表,推荐使用new ArrayList<>(values)或List.copyOf(values)(Java 10+)创建独立副本。关键点在于理解引用赋值与对象复制的区别,避免因共享引用导致意外修改。需要独立操作列表时,必须显式创建新对象。

加辣椒了吗?的博客 460

java set 循环删除_【Java】集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素。不知不觉中,有些陷阱,不知你有没有犯。一、漏网之鱼-for循环递增下标方式遍历集合,并删除元素如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素。说那么说可能也说不清楚,看以下示例:importjava.util.ArrayList;importjava.util.List;public ...

weixin_35158372的博客 430

List中remove()方法的陷阱

1、用for循环遍历List删除元素时,需要注意索引会左移的问题。2、List删除元素时,为避免陷阱,建议使用迭代器iterator的remove方式。3、List删除元素时,默认按索引删除,而不是对象删除。

日常工作记录,解决实际问题,不成体系。 1342
上一篇: ajax批量上传图片
下一篇: JQuery显示隐藏一个按钮
wive
博客等级 码龄14年 33粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值