package org.ssh.coll; import java.util.AbstractCollection; import java.util.AbstractList; import java.util.AbstractMap; import java.util.AbstractQueue; import java.util.AbstractSequentialList; import java.util.AbstractSet; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.ConcurrentModificationException; import java.util.Currency; //import java.util.CurrencyData; import java.util.Date; import java.util.Deque; import java.util.Dictionary; import java.util.DuplicateFormatFlagsException; import java.util.EmptyStackException; import java.util.Enumeration; import java.util.EnumMap; import java.util.EnumSet; import java.util.EventListener; import java.util.EventListenerProxy; import java.util.EventObject; import java.util.FormatFlagsConversionMismatchException; import java.util.Formattable; import java.util.FormattableFlags; import java.util.Formatter; import java.util.FormatterClosedException; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.IdentityHashMap; import java.util.IllegalFormatCodePointException; import java.util.IllegalFormatConversionException; import java.util.IllegalFormatException; import java.util.IllegalFormatFlagsException; import java.util.IllegalFormatPrecisionException; import java.util.IllegalFormatWidthException; import java.util.InputMismatchException; import java.util.InvalidPropertiesFormatException; import java.util.Iterator; //import java.util.JapaneseImperialCalendar; //import java.util.JumboEnumSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.ListResourceBundle; import java.util.Locale; //import java.util.LocaleISOData; import java.util.Map; import java.util.MissingFormatArgumentException; import java.util.MissingFormatWidthException; import java.util.MissingResourceException; import java.util.NavigableMap; import java.util.NavigableSet; import java.util.NoSuchElementException; import java.util.Observable; import java.util.Observer; import java.util.PriorityQueue; import java.util.Properties; import java.util.PropertyPermission; //import java.util.PropertyPermissionCollection; import java.util.PropertyResourceBundle; import java.util.Queue; import java.util.Random; import java.util.RandomAccess; //import java.util.RandomAccessSubList; //import java.util.RegularEnumSet; import java.util.ResourceBundle; import java.util.Scanner; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import java.util.Set; import java.util.SimpleTimeZone; import java.util.SortedMap; import java.util.SortedSet; import java.util.Stack; import java.util.StringTokenizer; //import java.util.SubList; //import java.util.TaskQueue; import java.util.Timer; import java.util.TimerTask; //import java.util.TimerThread; import java.util.TimeZone; import java.util.TooManyListenersException; import java.util.TreeMap; import java.util.TreeSet; import java.util.UnknownFormatConversionException; import java.util.UnknownFormatFlagsException; import java.util.UUID; import java.util.Vector; import java.util.WeakHashMap; //import java.util.XMLUtils; /** * 测试大集合的遍历速度 * * root Collection and Map * * 常用集合 list map set * * @author dgt * */ public class LargeCollTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); for (int i = 1; i <= 2000000; i++) { list.add(String.valueOf(i)); } // 方法1 Iterator<String> it1 = list.iterator(); long t1 = System.currentTimeMillis(); while (it1.hasNext()) { it1.next(); } long t2 = System.currentTimeMillis(); System.out.println("list 循环1 的时间差 = "+ (t2-t1)); // 方法2 怪异! long t3 = System.currentTimeMillis(); for (Iterator<String> it2 = list.iterator(); it2.hasNext();) { it2.next(); } long t4 = System.currentTimeMillis(); System.out.println("list 循环2 的时间差 = "+ (t4-t3)); // 方法3 long t5 = System.currentTimeMillis(); for (String tmp : list) { String s = tmp; } long t6 = System.currentTimeMillis(); System.out.println("list 循环3 的时间差 = "+ (t6-t5)); // 方法4 long t7 = System.currentTimeMillis(); for (int i = 0; i < list.size(); i++) { list.get(i); } long t8 = System.currentTimeMillis(); System.out.println("list 循环4 的时间差 = "+ (t8-t7)); } }
各种测试时间比较
添加一百万的时候状态:
list 循环1 的时间差 = 31
list 循环2 的时间差 = 47
list 循环3 的时间差 = 31
list 循环4 的时间差 = 16
list 循环1 的时间差 = 32
list 循环2 的时间差 = 46
list 循环3 的时间差 = 32
list 循环4 的时间差 = 15
list 循环1 的时间差 = 47
list 循环2 的时间差 = 31
list 循环3 的时间差 = 31
list 循环4 的时间差 = 16
list 循环1 平均的时间差 = 36.6
list 循环2 平均的时间差 = 41.3
list 循环3 平均的时间差 = 31.3
list 循环4 平均的时间差 = 15.6
===========================
添加二百万的时候状态:
list 循环1 的时间差 = 93
list 循环2 的时间差 = 78
list 循环3 的时间差 = 78
list 循环4 的时间差 = 32
list 循环1 的时间差 = 62
list 循环2 的时间差 = 78
list 循环3 的时间差 = 63
list 循环4 的时间差 = 31
list 循环1 的时间差 = 78
list 循环2 的时间差 = 63
list 循环3 的时间差 = 78
list 循环4 的时间差 = 31
list 循环1 平均的时间差 = 77.6
list 循环2 平均的时间差 = 73
list 循环3 平均的时间差 = 73
list 循环4 平均的时间差 = 31.3
如有不妥,敬请补充。
相关推荐
主要介绍了java使用ArrayList遍历及效率比较,实例分析了ArrayList遍历的方法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
主要介绍了Java ArrayList遍历修改代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ArrayList排序和遍历补充案例.java
如何遍历ArrayList的入门实例,可作为入门参考
在jni中操作arraylist对象,然后添加一个int型数据进去
arraylist是动态数组,它具有三个好处分别是:动态的增加和减少元素 、实现了ICollection和IList接口、灵活的设置数组的大小,本文给大家介绍java arraylist遍历及Java arraylist 用法,感兴趣的朋友一起学习吧
用java编写的迭代器,实现10数字正反向遍历。
day07_18_ArrayList练习三_按指定格式遍历集合字符串
主要给大家介绍了ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论。相信对大家的理解和学习具有一定的参考价值,有需要的...
遍历ArrayList存入HashMap中
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。 使用Java编写的应用程序,既...
集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试
主要会从ArrayList的构造方法、增加元素、删除元素、获取元素、查询元素、清空元素、判断元素是否存在以及ArrayList的遍历进行入手分析。 一:ArrayList的具体实现 1.1:构造函数 ArrayList list = new ArrayList();...
测试ArrayList,Dictionary,List,DataSet等对象的遍历性能
tree,ArrayList的创建与遍历插入 面试时可能会用到哦 1、根据 根节点rootId创建treeSize个子节点的tree树 2、根据list及父节点 列出父节点下的所有子节点 3、查找根节点 根据父节点找到对应的树 不足之处望大家...
一个C++(Ubuntu16.04+QT5.9.1)通过JNI,调用JAVA类及方法的示例。通过JNI传递和返回多种类型的参数,boolean ,int,String,ArrayList,ArrayList嵌套ArrayList<ArrayList<String>>等。
Java基础加强_ArrayList_HashSet的比较及Hashcode分析
数据库查询得到的数据为list,强制转化为arraylist,遍历array list,得到所有元素
ArrayList HashSet HashMap LinkedList 遍历方法 传统遍历方法 for(int i=0;i<list.size();i++) { String str = list.get(i); ... } 内置迭代器 for (String str : list) { ... } 显式迭代器 Iterator it = ...