原文地址: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. POJ3494Largest Submatrix of All 1’s[单调栈]

    Largest Submatrix of All 1’s Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 5883   Ac ...

  2. poj3635Full Tank?[分层图最短路]

    Full Tank? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7248   Accepted: 2338 Descri ...

  3. Unity Shader IDE — Sublime Text2

    使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...

  4. C++ create_task详解

    IAsyncOperation<T>^ asyncOperation = create_async( []() { return create_task(FirstAsync(...)) ...

  5. JSP中九大内置对象及其数据类型

    JSP中九大内置对象为: request              请求对象               类型 javax.servlet.ServletRequest         作用域 Req ...

  6. [No000065]python 获取当前时间

    要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间.用下面的方式来取得当前时间的时间戳: import time print(time.time()) 输出的结果是 ...

  7. java 22 - 21 多线程之多线程的代码实现方式3

    JDK5新增了一个Executors工厂类来产生线程池,有如下几个方法 A.public static ExecutorService newCachedThreadPool() B.public s ...

  8. 使用adb shell卸载程序

    个人感觉在命令行中卸载程序要比在手机界面卸载程序要方便许多,配合命令行下的报名查看包名的命令就更加方便了. 1.查看应用准确包名 adb shell pm list package -f |grep ...

  9. 报错问题:InnoDB: Error: log file ./ib_logfile0 is of different size

    InnoDB: Error: log file ./ib_logfile0 is of different size bytesInnoDB: than specified in the .cnf f ...

  10. PHP高效率写法及原因

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静态方法的 ...