从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码例如以下:
package com.hisense.tiger.list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); long t1,t2; for(int j = 0; j < 10000000; j++) { list.add("aaaaaa" + j); } System.out.println("List first visit method:"); t1=System.currentTimeMillis(); for(String tmp:list) { //System.out.println(tmp); } t2=System.currentTimeMillis(); System.out.println("Run Time:" + (t2 -t1) + "(ms)"); System.out.println("List second visit method:"); t1=System.currentTimeMillis(); for(int i = 0; i < list.size(); i++) { list.get(i); //System.out.println(list.get(i)); } t2=System.currentTimeMillis(); System.out.println("Run Time:" + (t2 -t1) + "(ms)"); System.out.println("List Third visit method:"); Iterator<String> iter = list.iterator(); t1=System.currentTimeMillis(); while(iter.hasNext()) { iter.next(); //System.out.println(iter.next()); } t2=System.currentTimeMillis(); System.out.println("Run Time:" + (t2 -t1) + "(ms)"); System.out.println("Finished!!!!!!!!"); } }
测试结果例如以下:
List first visit method:
Run Time:170(ms)
List second visit method:
Run Time:10(ms)
List Third visit method:
Run Time:34(ms)
Finished!!!!!!!!
测试的结论非常奇怪,第一种方法是java语言支持的新语法,代码最简洁,可是在三种方法中,性能确是最差的,取size进行遍历性能是最高的,求牛人解释?
相关推荐
遍历List对象集合是日常开发中常见的操作,这里我们将详细介绍三种遍历List的方法,并探讨它们的性能特点和适用场景。 ### 第一种:迭代器(Iterator)遍历 ```java for (Iterator<A> it = list.iterator(); it....
总结来说,遍历Java文件夹内文件涉及到`File`类的使用,特别是`listFiles()`方法,可能还会用到一些第三方库。具体的实现细节和策略,以及`FileSystem.java`和`FileSystem1.java`中的代码,都需要通过实际查看源码...
首先,这段代码主要展示了如何在Java中遍历一个列表(`List`),并且提供了四种不同的遍历方法。接下来,我们将详细介绍这四种遍历方式及其应用场景。 ### 1. 基于索引的传统for循环 这是最传统也是最直观的遍历...
下面将详细探讨三种遍历List集合的方法及其性能差异。 1. 使用`Iterator`遍历: ```java List list = new ArrayList(); // 添加元素 for (Iterator<String> it = list.iterator(); it.hasNext(); ) { String data ...
本文将深入探讨如何在Java中使用`keySet`方法来遍历`Map`集合,以及相关的知识点。 ### 一、Java Map接口简介 `Map`接口是Java集合框架的一部分,它提供了存储和检索唯一键对象及其对应的值对象的方法。一个`Map`...
### Java遍历JSON树知识点详解 #### 一、前言 在处理Web应用程序中的数据时,JSON(JavaScript Object Notation)是一种非常常见的数据格式。它轻量级且易于读写,因此广泛应用于前后端的数据交互中。对于Java...
在Java编程语言中,遍历一个目录下的所有文件和子目录是一项常见的任务,尤其是在处理文件系统操作时。这里我们将深入探讨如何使用Java API来实现这一功能,并解释相关的知识点。 首先,Java提供了`java.io.File`类...
为了遍历List,Java提供了一种迭代器(Iterator)的方式。ListIterator是Iterator的子接口,专为List设计,除了基本的`hasNext()`和`next()`方法外,还提供了`previous()`,`nextIndex()`和`previousIndex()`等方法,...
### Java遍历本地目录所有文件的实现:递归方法详解 在Java开发中,遍历本地目录中的所有文件是一项常见的需求,尤其在处理文件管理、数据读取或系统监控等场景下。本文将深入探讨如何利用Java编程语言,通过递归...
在Java编程语言中,List集合是一个重要的数据结构,...了解它们的特性和遍历方法,能够帮助我们更好地选择和使用List集合,优化程序性能。在实际开发中,要根据实际需求选择合适的数据结构,以实现高效、易维护的代码。
它提供了遍历文件夹的方法,如`list()`、`listFiles()` 和 `exists()`等。 2. **`list()` 方法**:对于一个目录,`list()` 方法返回一个字符串数组,包含了该目录下的所有文件和子目录的名字。这些名字并不包含路径...
本篇文章将详细介绍Java中List集合的三种遍历方式及其特点。 1. **迭代器(Iterator)遍历** 迭代器是Java集合框架提供的标准遍历接口。使用`Iterator`遍历List集合的代码如下: ```java List<String> list = ...
- 调用`listFile()`方法开始遍历过程。 - `listFile()`方法内部: - 调用`listFiles()`获取当前目录下的所有文件和子目录。 - 使用`for`循环遍历这些文件/目录。 - 如果是文件,则打印其路径。 - 如果是目录,则...
为了避免上述异常,有以下两种正确的方法来遍历并删除List和Set集合中的元素: 1. **使用Iterator进行遍历和删除** 这种方法通过获取集合的Iterator,并在循环中使用`iterator.remove()`方法删除元素,避免了并发...
### Java遍历文件树形结构输出 在Java编程中,我们经常会遇到需要遍历文件夹中的所有文件,并将其以树形结构输出的需求。这在文件系统管理、构建项目目录结构等场景中非常实用。下面将详细介绍如何使用Java来实现这...
总结,Java集合遍历是日常开发中常见的操作,理解不同集合的遍历方式对于优化代码性能至关重要。本教程提供的源代码详细解释了ArrayList、LinkedList、HashSet和HashMap的遍历,以及Java 8的流API使用,有助于加深对...
在Java编程中,遍历文件夹和解析XML是两种常见的操作,它们在处理数据和构建应用程序时发挥着关键作用。这篇文档"java遍历文件夹解析XML.doc"可能详细介绍了如何使用Java进行这两个任务。 首先,让我们深入了解一下...