[转]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 ...
随机推荐
- Python Select 解析
首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...
- Android工程师入门(一)——这周入大门,挤时间,轻喷
挤挤时间,入个门先. 一.环境搭建 略. 二.项目结构 在studio中,项目=Module: res:放置应用到的所有资源——基本决定了生成的APK的大小: java:java源程序: manife ...
- JustWeEngine - 轻量级游戏框架
JustWeEngine - 轻量级游戏框架 An easy open source Android game engine. Github地址 引擎核心类流程图 使用方法 引入Engine作为Lib ...
- TopCoder SRM 642 Div.2 1000 --二分+BFS
题意: 给你一张图,N个点(0~N-1),m条边,国王要从0到N-1,国王携带一个值,当走到一条边权大于此值的边时,要么不走,要么提升该边的边权,提升k个单位花费k^2块钱,国王就带了B块钱,问能携带 ...
- Android中事件传递机制的总结
事件传递虽然算不上某个单独的知识点,但是在实际项目开发中肯定会碰到,如果不明白其中的原理,那在设计各种滑动效果时就会感到很困惑. 关于事件的传递,我们可能会有以下疑问: 事件是如何传递的 事件是如何处 ...
- Editor扩展之查看Prefab用在那儿
Prefab查找需求 在项目开发阶段的中后期,工程中有越来越多的Prefab,当我们要修改一个prefab或删除无用的prefab时,或许我们不是那么清楚该prefab在那些场景中使用着或从未使用过, ...
- BigDecimal.ROUND_HALF_XXX的各种用法
在银行.帐户.计费等领域,BigDecimal提供了精确的数值计算.其中8种舍入方式值得掌握. 1.ROUND_UP 舍入远离零的舍入模式. 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数 ...
- jmeter 监控服务器的内存,cpu等内容
1.需要下载一个jar包,放入到lib /ext文件中 JMeterPlugins-Standard.jar 2.在服务器上安装 perfmon server agent 这里监控内存我们使用的是: ...
- MVC code first数据迁移 转
coptto:http://www.cnblogs.com/miro/p/4164076.html 本篇是相对独立的一篇,主要讲解不丢失数据进行数据库结构升级. 前面我们讲解EF功能时(见第三篇文章) ...
- 树莓派及其他硬件平台国内外Linux镜像站全汇总
转载至segmentfault. 本文收集整理国内对于Raspberry Pi.CubieBoard.pcDuino等各种Linux开源硬件平台,所使用的Raspbian.Arch Linux ARM ...