[转]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 ...
随机推荐
- 二分+最短路判定 BZOJ 2709: [Violet 1]迷宫花园
BZOJ 2709: [Violet 1]迷宫花园 Sample Input 5 ######### # # # # # # # #S# # ##### # # ## # # # ### ### ## ...
- JAVA设计模式之工厂模式
工厂模式概念: 实例化对象,用工厂方法代替new操作 工厂模式包括工厂方法模式和抽象工厂模式 抽象工厂模式是工厂方法模式的扩展 工厂模式的意图: 定义一个接口来创建对象,但是让子类来决定哪些类需要被实 ...
- JDK-Logger
log4j的作者Ceki Gülcü在停止维护log4j后开始新的日志组件的开发,他的新作为日志门面slf4j以及log4j的替代品logback.不过logback至今还没有出1.0的正式版,所以使 ...
- Qt 静态编译后的exe太大, 可以这样压缩.
1. 下载PECompact 下载地址:http://download.csdn.net/download/sniper_bing/7669247 , 不行大家就去baidu搜索下载就可以了这个是绿 ...
- Hibernate中saveOrUpdate()和merge()的区别
this.getSession().merge(obj); this.getSession().saveOrUpdate(obj); saveOrUpdate(): saveOrUpdate()基本上 ...
- java list
List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引 ArrayList:底层的数据结构使用的是数组结构(数组长度是可变 ...
- box-shadow 的一些使用
1.只有左侧有阴影 box-shadow: -10px 0px 3px 1px #aaaaaa;
- 在C++中实现字符串分割--split
字符串分割 在一些比较流行的语言中,字符串分割是一个比较重要的方法,不论是在python,java这样的系统级语言还是js这样的前端脚本都会在用到字符串的分割,然而在c++中却没有这样的方法用来调用. ...
- 持久化存储——偏好设置,plist,归档---学习笔记二
//一. 本地持久化 //1.沙盒 //1.1 应用程序包:存放的是应用程序的源文件,包括资源文件和可执行文件 NSString *path = [[NSBundle mainBundle]bundl ...
- React Native 项目运行在 Web 浏览器上面
React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Nati ...