首页 > 编程语言 >java 长度为2 for循环只循环了一次

java 长度为2 for循环只循环了一次

时间:2023-06-13 15:05:56浏览次数:34  
标签:遍历 java iterator 列表 userList 循环 user 长度 repairmanVO


上代码

for (Map<String,Object> user:userList){
	for(TSBrOrderDetailRepairmanVO repairmanVO:repairmanVOList){
		if(user.get("id").toString().equals(repairmanVO.getUId())){
			userList.remove(user);
		}
	}
}

这里的 userList的长度是2,但循环的话只循环了一次

在Java中,当你在循环一个列表的同时又对该列表进行修改时,就会抛出一个ConcurrentModificationException异常。这是因为在遍历列表时,迭代器记录了列表中元素的数量和状态,并且期望在列表的生命周期内保持一致性。如果你在遍历列表的同时修改了它,那么迭代器就会失效并抛出异常。

在你的代码中,你在遍历userList时,又尝试移除其中的元素。这就导致了迭代器失效并抛出异常,但是由于你没有在代码中捕获该异常,因此程序终止了。因此,如果你想要安全地从列表中删除元素,你应该使用一个Iterator来遍历列表,并调用Iterator的remove()方法来删除元素,而不是直接在列表上进行修改。修改后的代码可以像这样:

Iterator<Map<String, Object>> iterator = userList.iterator();
while(iterator.hasNext()){
	Map<String, Object> user = iterator.next();
	for(TSBrOrderDetailRepairmanVO repairmanVO:repairmanVOList){
		if(user.get("id").toString().equals(repairmanVO.getUId())){
			iterator.remove();
			break;  // 退出循环,因为已经找到匹配的元素
		}
	}
}


标签:遍历,java,iterator,列表,userList,循环,user,长度,repairmanVO
From: https://blog.51cto.com/u_16159391/6470206

相关文章

  • leetcode 104. 二叉树的最大深度(java实现)
    104.二叉树的最大深度标题解法标题给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。解法publicclassSolution{publicintmaxDepth(TreeNoderoot){//如果节点为空,返回深度为0......
  • Java反射(Class类)常用方法(附Xmind整理)
    文章目录一、类加载器1、Java类加载机制2、ClassLoader类加载器二、获取Class对象的方式1、Class.forName("全类名")2、类名.class3、对象.getClass()三、常用方法:1、获取构造方法、成员方法、成员变量(公开的public)2、获取构造方法、成员方法、成员变量(所有的public+private)3......
  • java垃圾回收(GC)机制
    一、为什么要进行垃圾回收?因为内存的容量是有限的。二、如果判断一个对象需要回收?1、引用计数算法:给每个对象中加一个引用计数器。每增加一个引用,计数器就+1。当计数器为0时,代表没有引用。因为有循环引用的存在,所以java虚拟机不再使用引用计数算法。2、可达性分析算法:通过GCR......
  • java如何往List<? extends number>中加入元素?体会范型集合父子关系以及范型通配符的使用
    以下来自一个stackoverflow的一个问答,写的很清楚。基本上就是子类集合的引用付给父类引用,如果父类的引用变量声明的是<?extendsParent>,则父类引用变量只能对集合进行读操作,读出来的变量是Parent类型,这是因为不确定该父类引用变量指向的是什么类型的集合,可以是Child1,也可以C......
  • Java:如何写好代码,少点bug
    前言工作差不多两年了。2021-04-14实习入职,至今2023-04-07,和大佬相比我这还是属于初级程序员,技术不强。平时写代码没啥技术含量,但真的挺多同事连基本的CRUD都写不好,不管是代码规范还是安全性问题都有很大的纰漏,所以觉得自己最大的骄傲就是代码规范,bug少。同时希望刚工作不久的......
  • java 泛型 深入
    评:泛型的好处:(casting)的绝对无误。/*******不使用泛型类型*******/Listlist1=newArrayList();list1.add(8080);//编译器不检查值String......
  • 【技术积累】JavaSciprt中的函数【一】
    什么是函数?如何声明函数?JavaScript中的函数是一段可重复使用的代码块,它可以接受输入并返回输出。在JavaScript中,函数是一种特殊的对象,因此可以将其存储在变量中,将其作为参数传递给其他函数,并从其他函数中返回。在JavaScript中,声明函数有两种方式:函数声明和函数表达式。1.函数......
  • Java8 Stream List Map:Stream 流对象汇总 求和 某个属性 BigDecimal MDouble
    测试实体(数字对象使用MDouble):importcom.mchweb.common.lang.MDouble;importlombok.*;@Getter@Setter@Builder(toBuilder=true)@NoArgsConstructor@AllArgsConstructorpublicclassUser{privateMDoublemoney;}importcom.mchweb.common.lang.MDouble;imp......
  • 你真的读懂了Java源码?Collections源码初探
    最近重温Java知识,遇到不懂的问题搜索互联网/博客很难直接找到答案,还好如今有了chatGPT,比大多数CV复读机/纯文档翻译的内容更有用。很多文章总结冠以“深入理解xxx”,“万字长文详解xxx”的文章,也不过是演示一遍调用代码,让你知道了怎么用,在什么情况下用。但至于为什么这么用,以及Java......
  • java WebUploader 分片上传
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......