Java遍历容器注意问题
2016-04-22 21:53
246 查看
今天写了个小程序,要遍历LinkedList容器,遍历过程会进行删除操作,allJobs是一个LinkedList,代码:
for(int i=0; i<allJobs.size(); i++){
Job j = allJobs.get(i);
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
i--;
}else{
break;
}
}
进行删除之后再遍历就会出现错误,比如allJobs是[1,2,3,4],i=1时进行删除操作,2被删掉,allJobs变成[1,3,4],i++之后就会直接遍历4,忽略掉3。所以每次删除之后要做一下i--的操作。
换成foreach语法就不会出问题
for(Job j: allJobs){
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
}else{
break;
}
}
for(int i=0; i<allJobs.size(); i++){
Job j = allJobs.get(i);
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
i--;
}else{
break;
}
}
进行删除之后再遍历就会出现错误,比如allJobs是[1,2,3,4],i=1时进行删除操作,2被删掉,allJobs变成[1,3,4],i++之后就会直接遍历4,忽略掉3。所以每次删除之后要做一下i--的操作。
换成foreach语法就不会出问题
for(Job j: allJobs){
if(j.requstTime <= job.duration +job.startTime){
readyJobs.add(j);
allJobs.remove(j);
}else{
break;
}
}
相关文章推荐
- 一些个人笔记(java第一季)
- JDK的动态代理
- (28)SpringBoot启动时的Banner设置【从零开始学Spring Boot】
- SSH中的exception is java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
- jdk中设计模式的实现
- JSON与JavaBean之间互转
- 欢迎使用CSDN-markdown编辑器
- 在myeclipse中添加反编译插件jad
- java 选择排序
- JAVA线程(一)
- Sturts2方法调用三种方式
- ubuntu 创建eclipse 快捷方式
- java周总结
- Java try finally
- java-cef系列视频第四集:自定义协议
- java 接口
- Java的System.out.println()的解析
- LeetCode94 Binary Tree Inorder Traversal(迭代实现) Java
- [改善Java代码] 谨慎包装类型的大小比较
- 在eclipse中安装插件