import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
/**
* compare iterator efficiency.
* @author sailing
* Date: 2007-10-01
*/
public final class CompareIterator {
/**
* define instance as single.
*/
private static CompareIterator instance = new CompareIterator();
/**
* construct CompareIterator class.
*/
private CompareIterator() {
}
/**
* get single.
* @return instance
*/
public static CompareIterator getInstance() {
return instance;
}
/**
* init data.
* @return list
*/
private List initData() {
List list = new ArrayList();
Map map = null;
int size = 10000;
for(int i = 0; i < size; i++) {
map = new HashMap();
map.put("key"+i, "value"+2*i);
list.add(map);
}
return list;
}
/**
* get system current time.
* @return time
*/
private Long getCurrentTime(){
Long time = 0l;
time = System.currentTimeMillis();
return time;
}
/**
* read by iterator.
* @param list
*/
private void readByIterator(List list) {
Iterator it = (Iterator) list.iterator();
Map map = null;
while(it.hasNext()){
map = (HashMap) it.next();
}
System.out.println("ReadByIterator End.");
}
/**
* read by list iterator.
* @param list list
*/
private void readByListIterator(List list) {
ListIterator li = list.listIterator();
Map map = null;
while(li.hasNext()){
map = (HashMap) li.next();
}
System.out.println("ReadByListIterator End.");
}
/**
* main.
* @param args
*/
public static void main(String []args) {
CompareIterator ci = new CompareIterator();
List list = ci.initData();
long startTime1 = 0;
long startTime2 = 0;
long endTime1 = 0;
long endTime2 = 0;
startTime1 = ci.getCurrentTime();
ci.readByIterator(list);
endTime1 = ci.getCurrentTime();
startTime2 = ci.getCurrentTime();
ci.readByListIterator(list);
endTime2 = ci.getCurrentTime();
System.out.println("ReadByIterator Need Time: " + (endTime1 - startTime1));
System.out.println("ReadByListIterator Need Time: " + (endTime2 - startTime2));
}
}
分享到:
相关推荐
java 1. 泛型 2. 队列 3. 栈 4. Iterator 和 ListIterator迭代器
Java 中 Iterator 和 ListIterator 实例详解 Iterator 和 ListIterator 是 Java 中两个重要的迭代器接口,用于遍历集合中的元素。下面我们将详细介绍这两个接口的作用范围、关系、方法和使用实例。 Iterator 和 ...
Java Iterator接口和ListIterator接口分析 Java Iterator接口和ListIterator接口是Java集合框架中的两个重要接口,分别用于迭代集合中的元素和列表中的元素。在本文中,我们将详细介绍Java Iterator接口和...
JAVA中ListIterator和Iterator详解与辨析 ListIterator和Iterator是JAVA集合中两个重要的迭代器,都是用于遍历集合中的元素的。但是它们之间存在着一些关键的区别。 首先,Iterator迭代器包含的方法有:hasNext()...
Iterator接口和ListIterator接口的使用可以带来很多便利,例如,使用Iterator接口可以遍历集合中的元素,而不管集合的具体实现类型,同时也可以使用ListIterator接口来控制迭代器的行为,例如,添加或删除元素。...
集合中添加元素?...而Iterator和ListIterator则是遍历集合的标准工具,它们的设计考虑了多线程环境下的安全性和遍历的顺序性。掌握这些知识点对于Java开发者来说,无论是面试还是实际开发,都是非常重要的。
`ListIterator`还提供了在遍历过程中添加、修改和删除元素的功能,使得对列表的操作更加灵活。本文将详细介绍如何使用`ListIterator`进行这些操作。 ### 1. `ListIterator`的基本用法 要获取`List`的`ListIterator...
对于需要双向遍历或在List中进行插入和删除操作的情况,Java提供了`ListIterator`接口,它是`Iterator`的子接口。`ListIterator`提供了`hasPrevious()`、`previous()`、`add()`和`set()`等额外的方法,增强了对List...
总之,Iterator作为Java中处理集合数据的核心工具之一,掌握其基本用法和进阶特性,对于提高代码质量和编程效率具有不可忽视的作用。无论是基础的遍历操作,还是高级的双向迭代和元素操作,Iterator都提供了强大的...
通过本文的学习,读者将能够更好地理解和掌握`Iterator`的用法。 #### 一、基本概念与使用方法 ##### 1. `Iterator`接口简介 `Iterator`接口定义了用于访问集合元素的方法,包括获取下一个元素、检查是否还有更多...
除了`Iterator`的方法,`ListIterator`还提供了`hasPrevious()`、`previous()`、`nextIndex()`和`previousIndex()`等方法,支持双向遍历,并能方便地插入元素。 7. **总结** `Iterator`是Java集合框架的核心,使得...
添加、删除操作的时间复杂度为O(N),get、set、iterator和listIterator操作的时间复杂度为常数时间。 三、容量 ArrayList的容量是可调整的,默认初始化为10,可以自动增长。可以通过ensureCapacity()方法提前增加...
在Java编程中,`ListIterator` 是一个比普通 `Iterator` 更加强大的迭代器,它专用于列表接口的实现类,如 `ArrayList`、`LinkedList` 等。`ListIterator` 提供了更多的操作方法,使得我们可以方便地在列表中进行前...
为了高效地遍历和操作这个容器中的元素,STL使用了迭代器(iterator)的概念。迭代器就像一个指针,但具有更高级的功能,能够适应不同的容器和算法。在本主题中,我们将深入探讨如何仿照`std::list`的迭代器进行实现...
9. **迭代器的变种**:除了基本的迭代器,还有一些变种,如`ListIterator`,它提供了向前和向后移动的能力,还可以插入元素。 10. **泛型与迭代器**:在支持泛型的语言中,如Java,迭代器可以指定元素类型,从而...
SQL语句的内联外联经典面试题 SQL语句的内联外联是一种常见的数据库查询技术,它可以根据不同的...Iterator和ListIterator是Java中两个常见的迭代器,Iterator只能用来遍历序列中的元素,而ListIterator可以双向移动。
该size,isEmpty,get,set,iterator和listIterator操作在固定时间内运行。 add操作以摊余常数运行 ,即添加n个元素需要O(n)个时间。 所有其他操作都以线性时间运行(粗略地说)。 与LinkedList实施相比,常数...
Iterator 和 ListIterator 都是 Java Collections 框架中的迭代器接口,但是它们在实现和应用场景上有所不同。Iterator 是 Java Collections 框架中的基本迭代器接口,提供了基本的迭代操作。ListIterator 是 List ...
什么是迭代器iterator和ListIterator的区别Collection和Collections的区别Comparable和Compartor接口是干什么,列出区别heap 和stack 有什么区别如何确保一个集合不会被修改CollectionListArray与ArrayList有什么...
Iterator接口有两个常用的实现类:Iterator和ListIterator。Iterator接口用于访问集合中的元素,而ListIterator接口用于访问List集合中的元素。 Properties类是Java集合类中的一种特殊类,以键值对的形式存储数据,...