[转]Java_List元素的遍历和删除

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

1、创建一个ArrayList

 

[java] view plain
  1. List<Integer> list = new ArrayList<Integer>();  

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

(1)下标循环

 

[java] view plain
  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循环

 

[java] view plain
  1. for (Integer elem : list) {  
  2.     System.out.print(elem.toString());  
  3. }  

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

 

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

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

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

(3)迭代器循环

 

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

或者

 

[java] view plain
  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)需要边遍历边修改容器大小时(插入删除元素),只使用迭代器循环

转载于:https://www.cnblogs.com/dirgo/p/5185623.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分层设计 --java中的几种包

对于刚接触包分层的同学&#xff0c;下面简单介绍一下java中各个层次&#xff1a; Modle 模型层 &#xff1a;存放你的实体类 dao&#xff1a;主要做数据库的交互工作&#xff0c;具体的增删改查等方法&#xff0c;操作数据库的&#xff1b;这里也可以存放查询所有的信息接口 …

Spring远程支持和开发RMI服务

Spring远程支持简化了启用远程服务的开发。 当前&#xff0c;Spring支持以下远程技术&#xff1a;远程方法调用&#xff08;RMI&#xff09;&#xff0c;HTTP调用程序&#xff0c;Hessian&#xff0c;Burlap&#xff0c;JAX-RPC&#xff0c;JAX-WS和JMS。 远程方法调用&#xf…

cesium绘制网格_Cesium学习笔记-工具篇37-风场绘制

这两天重新接触到流场&#xff0c;于是研究下&#xff0c;在大牛们的轮子上也算实现了效果&#xff1a;1二维2三维主要参考以下三篇文章&#xff1a;《WebGL风向图》给出制作风向图通常步骤&#xff1a;1. 在屏幕上生成一系列随机粒子位置并绘制粒子。2. 对于每一个粒子&#x…

ToString:身份哈希码的十六进制表示形式

我以前在方便的Apache Commons ToStringBuilder上写过博客&#xff0c;最近有人问我&#xff0c;在生成的String输出中出现的看似神秘的文本是什么构成的。 询问该问题的同事正确地推测出他正在查看的是哈希码&#xff0c;但与他实例的哈希码不匹配。 我解释说ToStringBuilder将…

HTML+CSS笔记 CSS中级 缩写入门

盒子模型代码简写回忆盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的&#xff1a;上右下左。语法:margin:10px 15px 12px 14px;/*上设置为10px、右设置为15px、下设置为12px、左设置为14px*/通常有三种缩写的方法:1、…

JavaScript学习随记——常见全局对象属性及方法

<script type"text/javascript" charset"utf-8">//全局对象&#xff1a; Object、Array、Math等/*** 全局的方法&#xff1a;* 1.encodeURI、escape、decodeURIComponet 编码* 2.decodeURI、unescape、encodeURIComponet 解码* 3.parseInt、parseF…

spring boot 定时任务

package com.ict.conf; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled;Configuration EnableScheduling // 启用定时任务 …

搬运机器人举杯贺所需的条件_智能搬运机器人比赛规则

附件4&#xff1a;分拣机器人(智能搬运机器人)比赛规则1、比赛目的设计一个轮式或人形小型机器人&#xff0c;在比赛场地里移动&#xff0c;将不同颜色、形状或者材质的物体分类搬运到不同的对应位置。比赛的记分根据机器人将物体放置的位置精度和完成时间来决定分值的高低。它…

我们多么想要新的Java日期/时间API?

当前的Java.net 民意测验问题是&#xff1a;“ 对于用Java 8实现的JSR-310&#xff08;新的日期和时间API&#xff09;有多重要&#xff1f; ”在我撰写本文时&#xff0c;将近150位受访者投了赞成票&#xff0c;绝大多数人回答“非常”&#xff08;53&#xff05;&#xff09;…

JavaScript学习随记——Function

每个函数都是Function类型的实例&#xff0c;而且都与其他引用类型一样具有属性和方法。由于函数是对象&#xff0c;因此函数名实际上也是一个指向函数对象的指针&#xff0c;不会于某个函数绑定。 函数的定义方式 <script type"text/javascript" charset"ut…

登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复

先上图&#xff1a;惨红色的提示信息&#xff0c;把你拒之App Store门外&#xff0c;但是对之放弃、不与之斗争不是我们的节奏&#xff0c;请看破敌攻略&#xff1a;1.查看你的“关于本机”-->“概览”-->“系统报告”&#xff0c;如图&#xff1a;找到你的“网络”-->…

我们三十以后才明白

当我们懂得珍惜时光的时候,已经发现自己不再年轻. 三十岁,才慢慢的明白. 男女三十而立&#xff0c;三十岁应该是人生的转折点&#xff0c;它不是青春韶华的终结&#xff0c;而是生命的第二起跑线。 三十岁&#xff0c;面对的不应该是没落&#xff0c;而是认知的新起点。很多曾…

Web开发的入门指导

Web开发的入门指导web开发编程技术你点开此文&#xff0c;说明你对Web开发是有兴趣的&#xff0c;或者你正在思考开始学习Web开发。在这里&#xff0c;我会告诉你成为一名Web开发者的路线&#xff0c;是对初学者关于Web开发的指导。这篇文章不会教你如何写代码&#xff0c;而是…

新东方mti百科知识pdf_20南航翻硕mti初试417上岸经验贴

南京航空航天大学mti初试417分排名第一:‌基础英语88:1&#xff0c;外刊阅读:从2月到6月开始一直打卡外刊app&#xff0c;友邻优课&#xff0c;流利阅读等2&#xff0c;背单词:扇贝单词app&#xff0c;新东方专八单词绿皮书&#xff0c;华研专八单词等3&#xff0c;星火专八阅读…

JavaScript学习随记——属性类型

<!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>属性类型</title></head> <body><script type"text/javascript" charset"…

Shell if else语句

if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句&#xff1a; if ... fi 语句&#xff1b;if ... else ... fi 语句&#xff1b;if ... elif ... else ... fi 语句。1) if ... else 语句 if ... else 语句的语法&#xff1a; if [ ex…

过滤日志中不相关的堆栈跟踪行

我喜欢堆栈痕迹。 不是因为我喜欢错误&#xff0c;而是因为发生错误的那一刻&#xff0c;堆栈跟踪是无价的信息源。 例如&#xff0c;在Web应用程序中&#xff0c;堆栈跟踪向您显示完整的请求处理路径&#xff0c;从HTTP套接字到过滤器&#xff0c;Servlet&#xff0c;控制器&a…

Can't create/write to file '/tmp/#sql_887d_0.MYD' (Errcode: 17)

lsof |grep "#sql_887d_0.MYD" 如果没有被占用就可以删掉 。 https://wordpress.org/support/topic/cant-createwrite-to-file-error Hello, just today I saw this kind of error on every page on my blog. WordPress database error: [Cant create/write to file …

python3怎么创建文件_Python3.5 创建文件的简单实例

实例如下所示&#xff1a;#codingutf-8Created on 2012-5-29author: xiaochouimport osimport timedef nsfile(s):The number of new expected documents#判断文件夹是否存在&#xff0c;如果不存在则创建b os.path.exists("E:\\testFile\\")if b:print("File …

Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)

上周我们介绍了神奇的只有五行的 Floyd 最短路算法&#xff0c;它可以方便的求得任意两点的最短路径&#xff0c;这称为“多源最短路”。本周来来介绍指定一个点&#xff08;源点&#xff09;到其余各个顶点的最短路径&#xff0c;也叫做“单源最短路径”。例如求下图中的 1 号…