原文地址: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. 《2016ThoughtWorks技术雷达峰会----变革的原因》

    变革的原因      张松 ,ThoughtWorks中国区总经理 首先回顾IT历史,观点如下: 1.在80,90年代,IT作为一个种生产效率的提高工具,主要是把手工的活动自动化.以client se ...

  2. Objective-C声明在头文件和实现文件中的区别

    Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件 ...

  3. idea常用快捷键

    十大Intellij IDEA快捷键 2015-01-16 21:31 122307人阅读 评论(38) 收藏 举报 本文章已收录于: .embody { padding: 10px 10px 10p ...

  4. Android应用性能测试

    Android应用性能测试 Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了——应用耗电大 2)首次/非首次启动应用,进入应用特别慢——应用启动慢 3)应用使用过程中,越 ...

  5. Anyconnect的VPN环境部署(1)-OpenConnect server(ocserv)服务安装

    打算在公司IDC机房部署一套VPN环境,经过考虑,最终决定采用Cisco下的开源技术AnyConnect.AnyConnect的优势有:1)长连接,待机不会断开:2)速度快,稳定性好:3)安全性好,全 ...

  6. gitlab配置邮件通知功能操作记录

    之前已经介绍了gitlab的部署http://www.cnblogs.com/kevingrace/p/5651402.html但是没有配置邮箱通知功能,今天这里介绍下gitlab安装后的邮箱配置操作 ...

  7. Python的高级特性2:列表推导式,生成器与迭代器

    一.列表推导式 1.列表推导式是颇具python风格的一种写法.这种写法除了高效,也更简短. In [23]: {i:el for i,el in enumerate(["one" ...

  8. js 增删改查方法

    push() 向数组的末尾添加一个或多个元素 pop() 删除数组内部并返回数组的最后一个元素 shift() 把数组内部的第一个元素从其中删除,并返回第一个元素的值 unshift() 向数组外部的 ...

  9. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

  10. mysql游标循环的使用

    CREATE PROCEDURE `test`.`new_procedure` () BEGIN DECLARE done INT DEFAULT FALSE; -- 需要定义接收游标数据的变量 ); ...