[转]Java_List元素的遍历和删除
原文地址:http://blog.csdn.net/insistgogo/article/details/19619645
1、创建一个ArrayList
- List<Integer> list = new ArrayList<Integer>();
2、List常用的遍历方法有三种:
(1)下标循环
- for (int i = 0, len = list.size(); i < len; i++) {
- System.out.print(list.get(i).toString());
- }
说明:
1)最一般的方法
2)idea快捷键:itar + Tab 或者 fori + Tab
(2)for each循环
- for (Integer elem : list) {
- System.out.print(elem.toString());
- }
说明:在不修改容器长度时,仅仅遍历容器时推荐使用。
1)优点:代码简洁美观:不存在索引,所以不用关心下标、初始值、是否越界等
2)缺点:删除容器中的元素容易出错。
3)idea快捷键:iter + Tab 或者 i + Tab
(3)迭代器循环
- for (Iterator iter = list.iterator(); iter.hasNext(); ) {
- System.out.print(iter.next());
- }
或者
- Iterator<Integer> iter = list.iterator();
- while (iter.hasNext()) {
- System.out.print(iter.next());
- }
说明:在删除容器中元素时,最好使用迭代器循环
1)优点:能对容器中的元素进行删除
2)idea快捷键:itco + Tab
3、三种遍历方法的效率比较
见文章:ArrayList和LinkedList的几种循环遍历方式及性能对比分析
这里该文章总结下:
(1)对于ArrayList而言:
1)从速度上看,foreach和迭代器循环速度差不多,但是都比下标遍历慢。
2)综合编码难度,在仅仅对集合进行遍历的时候,只使用for each
(2)对于LinkedList而言:
1)从速度上看,foreach和迭代器循环速度差不多,但是远比下标遍历快。
2)综合编码难度,在仅仅对集合进行遍历的时候,只使用for each
说明:
(1)对于LinkedList,GetAt方法需要一次遍历链表,其时间复杂度为O(n),因此使用下标遍历时,速度很慢,级别为n^2。
(2)对于ArrayList,GetAt方法直接使用下标定位,其时间复杂度为O(1),因此使用下标遍历时,级别为n。
总结:无论对于ArrayList还是LinkedList,
(1)仅对其遍历而不修改容器大小时,只使用foreach循环
(2)需要边遍历边修改容器大小时(插入删除元素),只使用迭代器循环
[转]Java_List元素的遍历和删除的更多相关文章
- java 集合list遍历时删除元素
本文探讨集合在遍历时删除其中元素的一些注意事项,代码如下 import java.util.ArrayList; import java.util.Iterator; import java.util ...
- 【转】ArrayList循环遍历并删除元素的常见陷阱
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...
- Java HashMap 如何正确遍历并删除元素
(一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K ...
- 正确在遍历中删除List元素
最近在写代码的时候遇到了遍历时删除List元素的问题,在此写一篇博客记录一下. 一般而言,遍历List元素有以下三种方式: 使用普通for循环遍历 使用增强型for循环遍历 使用iterator遍历 ...
- Java遍历时删除List、Set、Map中的元素(源码分析)
在对List.Set.Map执行遍历删除或添加等改变集合个数的操作时,不能使用普通的while.for循环或增强for.会抛出ConcurrentModificationException异常或者没有 ...
- js 遍历集合删除元素
js 遍历集合删除元素 /** * 有效的方式 - 改变下标,控制遍历 */ for (var i = 0; i < arr.length; i++) { if (...) { arr.spli ...
- ArrayList循环遍历并删除元素的常见陷阱
在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出bug.不妨把这个问题当做一道面试题目,我想一定能难道不少的人.今天就给大家说一下在ArrayList循环 ...
- 【Java】List遍历时删除元素的正确方式
当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...
- Java中ArrayList循环遍历并删除元素的陷阱
ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...
随机推荐
- Sql动态添加字段的正确姿势
如何给指定表动态添加字段? 一.创建一张表[Tbl_AutoFileds] (tableName表名,fieldName字段名,dataType数据类型,length长度 isnull 是否允许为n ...
- NOIP2012pj文化之旅[floyd]
描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次,即如果他学习了某种文化,则他就不能到达其他有这种文化的国家.不同的国家可能有相同的文化.不同文化的国家 ...
- Hibernate一对一关系映射
Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映 ...
- 实现了与maya场交互的能力
今天把模拟节点与maya场的对接做好了,效果如图: 图中黄色线为每个节点受到的外力,由于加了一个重力场,所以外力都是竖直向下. 节点连线方式如图所示: 交互的具体方法是在每次模拟之前,更新每个节点所受 ...
- Oracle多表连接,提高效率,性能优化 (转)
执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了. ...
- json格式的优点
总结:1.占带宽小(格式是压缩的)2. js通过eval()进行Json读取(便于客户端读取)3. JSON支持多种语言(c.c++.php等),便于服务端解析 JSON (JavaScript Ob ...
- nfs 三个参数权限
遇到nfs客户端不可写的情况. 有延迟啊啊啊.. 等1min左右就可以写了. 挂载参数: cat /var/lib/nfs/etab -->server cat /proc/mounts ...
- Camera.Parameters 参数
public class Camera.Parameters extends Object java.lang.Object ↳ android.hardware.Camera.Paramete ...
- scrapy 保存到 sqlite3
scrapy 爬取到结果后,将结果保存到 sqlite3,有两种方式 item Pipeline Feed Exporter 方式一 使用 item Pipeline 有三个步骤 文件 pipelin ...
- java之yield(),sleep(),wait()区别详解
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...