1. 常用遍历 List 之方法
遍历 List 方法有三:
a) for (Iterator iterator = ls.iterator(); iterator.hasNext();)
b) for (int i = 0; i < ls.size(); i++)
c) for (Object object : ls) (java5+)
常用 List 实现有二:
a) java.util.ArrayList
b) java.util.LinkedList
效率如何?
2. 遍历方法之小误差验证
输出:
class java.util.ArrayList
iterator-nanotime :7199195
arraylike-nanotime:1920143
foreach-nanotime :3775320
class java.util.LinkedList
iterator-nanotime :5430188
arraylike-nanotime:9148595046
foreach-nanotime :1677620
方法:
private static void nanoLoop(List ls){
System.out.println(ls.getClass());
{ // iterator
long b = System.nanoTime();
for (Iterator iterator = ls.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
}
System.out.println("iterator-nanotime :"+(System.nanoTime()-b));
}
{ // array-like
long b = System.nanoTime();
for (int i = 0; i < ls.size(); i++) {
Object object = (Object) ls.get(i);
}
System.out.println("arraylike-nanotime:"+(System.nanoTime()-b));
}
{ // foreach
long b = System.nanoTime();
for (Object object : ls) {
Object s = (Object) object;
}
System.out.println("foreach-nanotime :"+(System.nanoTime()-b));
}
}
private static List initList(List ls,int count){
for (int i = 0; i < count; i++) {
ls.add("aaaa");
}
return ls;
}
public static void main(String[] args) {
nanoLoop(initList(new ArrayList(),10*10000));
nanoLoop(initList(new LinkedList(),10*10000));
}
3. 鲁莽结论
* 黑盒情况下:foreach > iterator > arraylike
* ArrayList :arraylike>foreach >iterator
* LinkedList:foreach >iterator >>>arraylike
4. 刨根问底
read the fk source code -_-
分享到:
相关推荐
当我们需要遍历List并根据条件删除特定元素时,需要注意正确的方法,以避免在遍历过程中出现错误。以下将详细介绍如何在C#中遍历List并删除元素,包括正序和倒序遍历的技巧。 首先,我们来看一下错误的遍历方式。...
在FreeMarker中,遍历`List<Map<String>>`是常见的操作,尤其在处理从后端传来的复杂数据结构时。这篇博客链接虽然无法直接访问,但从标题来看,我们可以推测其内容可能涉及如何在FreeMarker模板中遍历一个包含Map...
### c标签遍历集合嵌套的List集合 在Java Web开发中,经常需要处理复杂的集合数据结构,并将其展示到前端页面上。对于嵌套的集合(例如:List中包含List),使用`c`标签库(JSTL)进行遍历是一种常见的做法。本文将...
遍历List的时间复杂度与ArrayList相同,都是O(n),但由于类型安全,List通常被视为更优的选择。 最后,`DataSet`是.NET中用于存储和操作关系数据的复杂对象,它包含了多个DataTable。DataSet设计用于处理大量数据库...
为了遍历List,Java提供了一种迭代器(Iterator)的方式。ListIterator是Iterator的子接口,专为List设计,除了基本的`hasNext()`和`next()`方法外,还提供了`previous()`,`nextIndex()`和`previousIndex()`等方法,...
不同之处在于它首先将`chks.length`的值赋给一个变量`length`,这样在循环内部就不需要重复访问`length`属性,从而可能提高性能。 #### 3. 性能考量 在这段代码中,作者通过记录每次遍历前后的时间差来评估每种方法...
在Java编程中,遍历List集合是常见的操作,有多种方式可以实现这一功能。下面将详细探讨三种遍历List集合的方法及其性能差异。 1. 使用`Iterator`遍历: ```java List list = new ArrayList(); // 添加元素 for ...
接下来,我们讨论如何遍历List。List是一种有序的集合,`iterator`标签通过`status`属性可以提供迭代状态信息,如当前元素的索引等。假设我们有一个名为`myList`的List,我们可以这样遍历: ```jsp <p>Item #{...
本文将深入探讨关于CheckBoxList的绑定和遍历的实现方法及其相关知识点。 一、CheckBoxList绑定 1. 数据源绑定: CheckBoxList的数据源可以是数组、列表、数据库查询结果等,通过DataSource属性设置数据源,然后...
遍历List对象集合是日常开发中常见的操作,这里我们将详细介绍三种遍历List的方法,并探讨它们的性能特点和适用场景。 ### 第一种:迭代器(Iterator)遍历 ```java for (Iterator<A> it = list.iterator(); it....
火山PC文件遍历的解决方案主要关注的是在...总的来说,火山PC文件遍历的解决方案涉及到计算机系统底层的文件系统操作、编程技巧以及效率和安全性的考量。理解并掌握这些知识点对于开发涉及文件处理的软件至关重要。
在实际编程中,遍历List集合是常见的需求,用于访问和处理集合中的每个元素。本篇文章将详细介绍Java中List集合的三种遍历方式及其特点。 1. **迭代器(Iterator)遍历** 迭代器是Java集合框架提供的标准遍历接口...
在实际编程中,根据具体需求选择合适的遍历方法,可以极大地提高代码的可读性和效率。记得,遍历字典并不局限于一种方式,灵活运用各种技巧能让你的代码更加优雅。在实践过程中,不断探索和尝试,你会发现更多有趣和...
在IT领域,遍历文件夹并自动生成目录树是一项常用的任务,特别是在文件管理、数据整理以及自动化脚本编写中。这个过程通常涉及到操作系统...通过了解这些基础知识,你可以更有效地管理和操作文件系统,提高工作效率。
例如,`<c:forEach>`标签是用于遍历集合的,它是JSTL中最常用的标签之一。 **2. `<c:forEach>`标签** `<c:forEach>`标签用于遍历任何可迭代的数据源,如ArrayList、LinkedList、HashMap等。其基本语法如下: ```...
例如,通过使用CSS选择器来定位特定类型的控件,或者只遍历那些需要修改样式的元素,可以提高代码效率。 总结来说,“遍历页面控件换CSS”是一个在网页开发中调整样式的重要技术,它结合了遍历DOM元素和动态修改CSS...
在Java编程语言中,`Map`接口是一...总之,遍历`Map`是Java编程中常见的需求之一,掌握正确的遍历方法不仅可以提高代码的效率,还可以避免潜在的错误。希望本文的内容能帮助你更好地理解和使用Java中的`Map`遍历技巧。
ArrayList 是一种基于数组的 List 实现类,它提供了快速的随机访问能力,但是插入和删除元素时需要移动大量元素,效率较低。LinkedList 是一种基于链表的 List 实现类,它提供了快速的插入和删除能力,但是随机访问...
例如,使用STL库中的`vector`或`list`容器来表示邻接表,使用`queue`或`stack`容器来进行DFS和BFS的遍历。同时,为了跟踪已访问过的节点,可以创建一个布尔数组或利用`std::set`来存储已访问的顶点。 在实际应用中...
Java中提供了多种集合遍历方式,包括迭代器遍历、Map遍历、List遍历等。下面我们将逐一介绍这些遍历方式的实现原理和优缺点。 一、迭代器遍历 迭代器遍历是Java中最基本的集合遍历方式。迭代器是一个对象,它允许...