`
jsjzhou
  • 浏览: 28551 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java迭代注意事项

阅读更多

    最近在做通用数据收集接口.由于业务比较复杂,数据无法在数据库中完成分组和排序.只要在内存中进行.需要对java的List进行迭代删除.当时条件反射的用了java的foreach循环.在循环中用了remove操作.代码大致如下:

List<TopIndex> topIndexes=....

for(TopIndex topIndexe : topIndexes){

   //....

   topIndexes.remove(topIndexe );

   //...

}

  很自然出现了不一致的数据,但是没有throw异常.经过过跟踪,发现了问题.于是将foreach循环改写为:

for(Iterator<TopIndex> it=topIndexes.iterator();it.hasNext();){

   //....

  topIndexe=it.next();

   topIndexes.remove(topIndexe );

   //...

}.

这次抛出异常了,异常信息提示非同步操作.我立马想到删除操作应该用于迭代器的remove方法.否者会抛出异常.于是改写了代码:

for(Iterator<TopIndex> it=topIndexes.iterator();it.hasNext();){

   //....

 

it.next();

//...........

 

  it.remove();

   //...

}.

 

而后,程序正确运行.通过这次我bug排除,我认识到.不能仅仅记得书本上的理论,教条.更应动手实践,积累经验.形成条件反射.

在发现问题,解决问题后,需要总结,下次遇到同样的问题,就可以迎刃而解了.

本次总结如下:   java foreach只能用于只读的情况.如果需要删除操作,请用迭代器或者直接遍历List.

分享到:
评论

相关推荐

    java基础 集合-22-迭代器设计模式

    8. **迭代器的注意事项** - 调用`remove()`方法后,应立即检查`hasNext()`,因为可能会影响后续的迭代。 - 如果在迭代过程中添加或删除元素,建议使用`Iterator`的`remove()`方法,而不是集合的`add()`或`remove()...

    Java基础教程之HashMap迭代删除使用方法

    Java基础教程之HashMap迭代删除使用方法 ...本文对HashMap迭代删除的相关知识点进行了详细的讲解,包括迭代删除的重要性、实现方式和注意事项。我们希望本文的内容能够对大家的学习或者工作具有一定的参考学习价值。

    第二十讲:迭代模式

    描述中的链接指向了一个ITeye博客文章,虽然具体内容未给出,但可以推断这篇文章可能详细解释了迭代模式的原理,通过实例展示了如何在代码中使用迭代器模式,并可能讨论了一些最佳实践和注意事项。 标签“源码 工具...

    怎么将利用DWR调用JAVA类方法所返回的ArrayList数组   赋值给   logiciterate 迭代器

    6. **注意事项:** - 在调用Java方法时,需要确保Java方法的返回类型与前端期望的类型一致。 - 在填充逻辑迭代器时,应先清空原有的选项,避免重复添加。 - 如果返回的ArrayList为空或未正确返回,则应在前端进行...

    Android 高效编程注意事项

    ### Android高效编程注意事项 在Android应用开发过程中,为了提高应用程序的性能和响应速度,开发者需要注意以下几点关于高效编程的关键知识点: #### 概述 对于资源受限的系统(如移动设备),有两个基本准则...

    Java集合框架迭代器Iterator实现原理解析

    下面我们将详细介绍迭代器的实现原理、使用方法和注意事项。 一、什么是迭代器? Iterator是Java中的一个接口,核心作用就是用来遍历容器的元素。当容器实现了Iterator接口后,可以通过调用Iterator()方法获取一个...

    【IT十八掌徐培成】Java基础第10天-04.List-迭代器-对象等价性.zip

    6. **注意事项**:在使用迭代器时,要特别注意不要同时使用迭代器和直接调用List的`add()`或`remove()`方法,因为这可能导致并发修改异常。如果需要在遍历过程中修改List,应始终通过迭代器的`remove()`方法进行操作...

    Java中增强for循环的实现原理和坑详解

    三、使用增强for循环的注意事项 在使用增强for循环时,需要注意以下几点: * 增强for循环只能用于遍历集合或数组,不可以用于遍历普通对象。 * 在遍历过程中,不能修改集合或数组的内容,以免引发...

    java技巧java中可以用来循环遍历任何一个集合的通用方法

    本文将详细介绍一种在Java中循环遍历任何一个集合的通用方法,并通过示例代码来具体说明其实现过程及注意事项。 #### 1. 集合遍历的重要性 集合框架是Java中非常基础且重要的组成部分之一,它提供了存储和管理对象...

    java中List删除时需要的注意事项

    本文将深入探讨在Java中删除List元素时需要注意的事项。 首先,让我们看一个常见的错误示例: ```java List&lt;Integer&gt; list = new ArrayList(); list.add(1); list.add(2); list.add(2); list.add(3); for (int i =...

    Java Collection 移除元素方法及注意事项

    Java Collection 移除元素方法及注意事项 Java Collection 中的元素移除操作是 Java 编程人员每天都在重复的事情。本文主要介绍了 Java Collection 移除元素方法及注意事项,通过简单实例讲解了从 Java Collection ...

    java编码注意点

    以下是一些重要的Java编码注意事项: 1. **单例模式的使用**:单例模式是一种设计模式,它限制一个类只能有一个实例。这种模式适用于控制资源的访问、限制实例创建以及实现跨线程的数据共享。然而,并非所有场景都...

    java实现logistic回归算法

    6. **实战应用与注意事项** - 实战中,可能需要结合实际问题调整模型,如正则化防止过拟合。 - 数据集划分,通常使用交叉验证来评估模型的泛化能力。 - 调参技巧,如网格搜索、随机搜索等,找到最优超参数组合。 ...

    张龙JAVA圣思园笔记

    笔记中会涵盖Serializable接口,ObjectInputStream和ObjectOutputStream的使用,以及反序列化的注意事项。 4. **集合框架**: 集合框架是Java中处理数据集合的关键工具,包括List、Set、Map接口以及ArrayList、...

    java集合习题及答案

    **注意事项:** - 确保输入的字符串非空且有效。 - 如果子字符串为空或长度为0,可能进入无限循环,因此需要进行边界条件处理。 #### 题目二:删除列表中特定元素 **题目描述:** 编写一个Java程序,从一个包含...

    Word2Vec java版实现

    7. **注意事项** - 训练大型数据集可能需要大量计算资源,因此需要考虑GPU加速或分布式训练。 - 模型选择应根据任务需求,CBOW适合处理大词汇量,Skip-gram适合小数据集和稀疏词汇。 总结来说,Java版的Word2Vec...

    iterator-demo 迭代器设计模式demo

    5. **注意事项**: - 迭代器模式的实现需要注意线程安全问题,如果多个线程同时访问同一个迭代器,可能会导致数据不一致。 - 在使用迭代器时,若在遍历过程中修改了聚合对象,可能会影响迭代器的行为,可能导致`...

    java遍历JSON树

    #### 六、注意事项 1. **异常处理:** 在实际应用中,应该对可能出现的各种异常进行处理,如输入字符串不符合JSON格式等。 2. **性能优化:** 当处理大型JSON数据时,应该考虑性能优化措施,比如使用更高效的JSON...

    java spi实现工程

    6. **注意事项** - 配置文件的格式很重要,必须确保正确无误。 - `ServiceLoader`加载服务时是懒加载的,首次调用迭代器的`next()`方法才会真正加载服务。 - 如果有多个服务提供者,可以通过配置文件控制加载顺序...

    Java语言基础小结

    - **注意事项**: - `goto`和`const`为保留关键字,虽然目前未被使用,但在将来版本中可能会作为关键字。 - 使用IDE(如Notepad++)时,这些关键字通常会被高亮显示,便于识别。 #### 四、标识符 - **定义**:...

Global site tag (gtag.js) - Google Analytics