对应数据的遍历方式有很多,下面介绍下Iterator,for,forEach三种方式的遍历和执行效率问题
1.代码如下:
/**
* Iterator,for,forEach比较
* @author w2cboy
* date 2014-03-24
*/
public class Test {
private static final int COUNT = 10000;
private static List<Person> persons = new ArrayList<Person>();
public static void init(){
//初始化,生成对象个数
Person person=null;
for(int i=0;i<COUNT;i++){
person=new Person(i,"张三"+i,i+"");
persons.add(person);
}
}
//Iterator遍历
public static long testIterator(){
//开始编译执行时间
long start =System.nanoTime();
Person person=null;
for (Iterator<Person> iterator = persons.iterator(); iterator.hasNext();) {
person = (Person) iterator.next();
}
//执行完后的时间
long end =System.nanoTime();
return (end- start) / (1000);
}
//foEach循环遍历
public static long testForEach(){
//开始编译执行时间
long start =System.nanoTime();
Person person=null;
for(Person p:persons){
person=p;
}
//执行完后的时间
long end =System.nanoTime();
return (end- start) / (1000);
}
//for循环遍历
public static long testFor(){
//开始编译执行时间
long start =System.nanoTime();
Person person=null;
for(int i=0;i<persons.size();i++){
person=persons.get(i);
}
//执行完后的时间
long end =System.nanoTime();
return (end- start) / (1000);
}
public static void testRegxp(){
}
public static void main(String[] args) {
init();
System.out.println("Iterator迭代遍历的消耗时间为:"+testIterator());
System.out.println("ForEach遍历的消耗时间为:"+testForEach());
System.out.println("For循环遍历的消耗时间为:"+testFor());
}
}
2.测试结果:
A.此结果是在10万级下测试的,此时forEach循环遍历耗时较少,For和Iterator耗时较多
B.此结果是在1万级下测试的,此时for循环遍历耗时较少,ForEach和Iterator耗时较多
综上若遍历的数据较多时,forEach效率较高,数量级较少是for循环效率较高
相关推荐
在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合。 不同点: 1. 形式差别 for 的形式是...
主要介绍了JSP中c:foreach遍历和s:iterator遍历异同,以两个完整实例形式对比分析了c:foreach遍历和s:iterator遍历的具体用法,具有一定参考借鉴价值,需要的朋友可以参考下
### JSP自定义标签的`forEach`遍历与转义字符示例详解 #### 一、概述 在Java Server Pages (JSP) 开发中,自定义标签是一种强大的功能,可以让开发者封装常用的代码块,提高代码复用性,并简化页面的编写。本文将...
`foreach`循环也被称为增强for循环,它的主要目的是简化对数组和集合的迭代操作。在本实例中,我们将深入探讨如何使用`foreach`循环遍历集合元素,并理解其工作原理以及可能遇到的问题。 首先,让我们看下给出的...
而forEach遍历是标签处理器中常用的功能之一,用于遍历集合类型的数据。转义字符则是在显示数据时,对特殊字符进行转义处理以避免它们被解释为HTML代码的一部分。 在本例中,主要讲述了如何使用JSP创建一个简单的...
同时,`key()`和`valid()`方法确保正确返回当前元素的键和判断是否仍有元素待遍历。通过这样的方式,我们可以使用`foreach`循环遍历整个多维数组。 总结起来,处理多维数组的遍历时,PHP提供了内置的`...
使用Iterator遍历ArrayList可以提供更多的控制权,但需要手动处理 hasNext和next方法。使用for循环遍历ArrayList可以提供更好的性能,但需要手动处理索引。使用foreach循环遍历ArrayList可以提供更好的可读性,但...
### Map遍历的四种方法 在Java编程语言中,`Map`是一种常用的数据结构,用于存储键值对。为了能够有效地处理和操作这些键值对...在实际开发过程中,理解和灵活运用这些遍历技巧对于提高代码质量和效率具有重要意义。
例如,在遍历 Map 集合时,foreach 语句可以使用 entrySet 方法来获取键值对的集合,而 for 语句可以使用 Iterator 迭代器来遍历集合。 foreach 语句和 for 语句都是 Java 编程语言中重要的循环语句,每种语句都有...
对于`std::list`,我们可以使用`iterator`类型来遍历所有元素。以下是一个例子: ```cpp #include #include void traverseList(std::list<int> &lst) { for (std::list<int>::iterator it = lst.begin(); it !=...
for (Iterator<Integer> i = list.iterator(); i.hasNext(); ) { Integer i0 = i.next(); if (i0 == 1) { i0 = i0 * 2; } } ``` 在上面的代码中,我们使用了 Iterator 来遍历 ArrayList,並在遍历过程中修改...
Collection 是所以集合的基类,该实例主要对Collection集合的成员函数的练习以及Iterator和foreach的遍历集合的练习,试用与java/C++ 新手。。
通过实验,我们可以看到,当元素数量较大(如1000000)时,使用索引遍历(第四种方法)的效率最高,其次是增强型for循环,然后是使用Iterator。当元素数量较小(如10)时,各种方法之间的差异变得微不足道,因为此时...
除了使用`Iterator`进行遍历外,还可以使用增强型for循环(foreach循环)来简化遍历过程。这种方式与上述两种方法本质上是一样的,只是语法更简洁。 **示例代码:** ```java // 使用keySet的增强for循环 public ...
总的来说,AngularJS的`forEach`方法提供了一种优雅、健壮的方式来遍历和操作数组和对象,它的实现考虑了多种情况,包括浏览器兼容性和性能优化,使得开发者能更方便地处理JavaScript中的数据结构。
本文将深入分析Java中三种主要的遍历集合方法:传统的for循环遍历、迭代器遍历以及foreach循环遍历。 1. **传统的for循环遍历**: 这种方式依赖于计数器,开发者需要手动初始化并维护计数器,依次读取集合中的每个...
增强型for循环(也称为“foreach”循环)是Java 5引入的一种更简洁的遍历数组或集合的方式。它自动处理了索引管理和循环终止条件。 **代码示例**: ```java public class Example { public static void main...
在Java中,`Iterator`接口用于遍历元素,通常与`List`、`Set`等集合类一起使用。代码示例中给出了使用`Iterator`的遍历方式: ```java Iterator<User> it = userList.iterator(); while (it.hasNext()) { User ...