原文地址:http://blog.csdn.net/insistgogo/article/details/19619645

1、创建一个ArrayList

  1. List<Integer> list = new ArrayList<Integer>();

2、List常用的遍历方法有三种:

(1)下标循环

  1. for (int i = 0, len = list.size(); i < len; i++) {
  2. System.out.print(list.get(i).toString());
  3. }

说明:

1)最一般的方法

2)idea快捷键:itar + Tab 或者 fori + Tab

(2)for each循环

  1. for (Integer elem : list) {
  2. System.out.print(elem.toString());
  3. }

说明:在不修改容器长度时,仅仅遍历容器时推荐使用。

1)优点:代码简洁美观:不存在索引,所以不用关心下标、初始值、是否越界等

2)缺点:删除容器中的元素容易出错。

3)idea快捷键:iter + Tab 或者 i + Tab

(3)迭代器循环

  1. for (Iterator iter = list.iterator(); iter.hasNext(); ) {
  2. System.out.print(iter.next());
  3. }

或者

  1. Iterator<Integer> iter = list.iterator();
  2. while (iter.hasNext()) {
  3. System.out.print(iter.next());
  4. }

说明:在删除容器中元素时,最好使用迭代器循环

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元素的遍历和删除的更多相关文章

  1. java 集合list遍历时删除元素

    本文探讨集合在遍历时删除其中元素的一些注意事项,代码如下 import java.util.ArrayList; import java.util.Iterator; import java.util ...

  2. 【转】ArrayList循环遍历并删除元素的常见陷阱

    转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...

  3. Java HashMap 如何正确遍历并删除元素

    (一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K ...

  4. 正确在遍历中删除List元素

    最近在写代码的时候遇到了遍历时删除List元素的问题,在此写一篇博客记录一下. 一般而言,遍历List元素有以下三种方式: 使用普通for循环遍历 使用增强型for循环遍历 使用iterator遍历 ...

  5. Java遍历时删除List、Set、Map中的元素(源码分析)

    在对List.Set.Map执行遍历删除或添加等改变集合个数的操作时,不能使用普通的while.for循环或增强for.会抛出ConcurrentModificationException异常或者没有 ...

  6. js 遍历集合删除元素

    js 遍历集合删除元素 /** * 有效的方式 - 改变下标,控制遍历 */ for (var i = 0; i < arr.length; i++) { if (...) { arr.spli ...

  7. ArrayList循环遍历并删除元素的常见陷阱

    在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出bug.不妨把这个问题当做一道面试题目,我想一定能难道不少的人.今天就给大家说一下在ArrayList循环 ...

  8. 【Java】List遍历时删除元素的正确方式

    当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...

  9. Java中ArrayList循环遍历并删除元素的陷阱

    ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...

随机推荐

  1. ZBrush中文版ZBrushCore震撼来袭

    北京时间2016年9月30日,Pixologic公司召开新闻发布会,宣布ZBrush精简版ZBrushCore正式发布.该版本不仅支持中文,还支持多国语言,包括法语.西班牙语等.简单点来说,ZBrus ...

  2. monkey学习笔记

    Monkey一. Monkey 是什么?Monkey是Android中的一个命令行工具,它其实就是SDK中附带的一个工具,可以运行在模拟器里或实际设备中. 二.Monkey 测试的目的?Monkey测 ...

  3. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)

    A 思路: 贪心,每次要么选两个最大的,要么选三个,因为一个数(除了1)都可以拆成2和3相加,直到所有的数都相同就停止,这时就可以得到答案了; C: 二分+bfs,二分答案,然后bfs找出距离小于等于 ...

  4. POJ 1724 ROADS【最短路/搜索/DP】

    一道写法多样的题,很具有启发性. 具体参考:http://www.cnblogs.com/scau20110726/archive/2013/04/28/3050178.html http://blo ...

  5. UNITY3D的变量初始化问题

    大部分是代码声明变量,而变量的初始化值在编辑器中指定,不在代码中直接指定 奇怪! 而且只有Public的才能在编辑器中出现,如果你改为Private就不再显示,如果你再改回PUBLIC,原先指定的初化 ...

  6. mvc5权限管理(简单登录):ActionFilterAttribute

    效果图: 1.控制器 public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(User ...

  7. JavaScript Number 对象

    JavaScript Number 对象 Number 对象 Number 对象是原始数值的包装对象. Number 创建方式 new Number(). 语法 var num = new Numbe ...

  8. LInux下修改 ~/.bashrc 文件source ~/.bashrc 后 shell 命令 失效 任何命令都显示 “ bash XX :未找到命令”

    原因:在java安装后进行环境变量配置其中 export JAVA_HOME="/opt/java/jdk1.8" export PATH=$JAVA_HOME 即结束 错误原因: ...

  9. sqlserver 通用分页存储过程

    来源:http://www.jb51.net/article/19936.htm CREATE PROCEDURE commonPagination ), --要显示的列名,用逗号隔开 ), --要查 ...

  10. 使用spring boot和thrift、zookeeper建立微服务

    Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是restful微服务开发的利器.但对于内网服务,即服务与服务之间的调用,spring并没有去刻意封装,也 ...