长沙手机网站制作,东莞凤岗哪里有学做网站的,北京专业网站建设公司哪家好,网站开发编程入门学习目录一、ArrayList遍历方式1、普通for循环遍历2、增强for循环遍历3、Iterator迭代器遍历4、三种方式比较二、Map遍历方式1、增强for循环 keySet() 遍历2、增强for循环 entrySet() 遍历3、Iterator keySet() 遍历4、Itorator entrySet() 遍历5、四种方式比较三、java开发手册…
目录一、ArrayList遍历方式1、普通for循环遍历2、增强for循环遍历3、Iterator迭代器遍历4、三种方式比较二、Map遍历方式1、增强for循环 keySet() 遍历2、增强for循环 entrySet() 遍历3、Iterator keySet() 遍历4、Itorator entrySet() 遍历5、四种方式比较三、java开发手册关于map的一、ArrayList遍历方式
1、普通for循环遍历
for(int i0; ilists.size(); i){String key lists.get(i);
}2、增强for循环遍历
for(String str : lists){String key str;
}3、Iterator迭代器遍历
Iterator iterator lists.iterator();
while (iterator.hasNext()){String key iterator.next().toString();
}4、三种方式比较
import java.util.ArrayList;
import java.util.Iterator;public class ArrayListFor {private static ArrayListString initData(){ArrayListString lists new ArrayListString(1000000);for(int i0; i1000000; i){lists.add(i abcdefg);}return lists;}private static String forOne(ArrayListString lists){StringBuilder sb new StringBuilder();sb.append(普通For循环int i0; icount; i。);sb.append(\r\n);long start System.currentTimeMillis();for(int i0; ilists.size(); i){String key lists.get(i);}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}private static String forTwo(ArrayListString lists){StringBuilder sb new StringBuilder();sb.append(加强For循环int i : lists。);sb.append(\r\n);long start System.currentTimeMillis();for(String str : lists){String key str;}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}private static String forThree(ArrayListString lists){StringBuilder sb new StringBuilder();sb.append(Iterator循环list.iterator()。);sb.append(\r\n);long start System.currentTimeMillis();Iterator iterator lists.iterator();while (iterator.hasNext()){String key iterator.next().toString();}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}public static String forCycle(ArrayListString lists) {StringBuilder sb new StringBuilder();sb.append(ArrayList遍历比较);sb.append(\r\n);sb.append(forOne(lists));sb.append(forTwo(lists));sb.append(forThree(lists));return sb.toString();}public static void main(String[] args) {ArrayListString lists initData();for(int i0; i5; i){System.out.println(forCycle(lists));}}
}运行结果
ArrayList遍历比较
普通For循环int i0; icount; i。
duration [33]ms
加强For循环int i : lists。
duration [35]ms
Iterator循环list.iterator()。
duration [34]msArrayList遍历比较
普通For循环int i0; icount; i。
duration [29]ms
加强For循环int i : lists。
duration [32]ms
Iterator循环list.iterator()。
duration [32]msArrayList遍历比较
普通For循环int i0; icount; i。
duration [26]ms
加强For循环int i : lists。
duration [27]ms
Iterator循环list.iterator()。
duration [27]msArrayList遍历比较
普通For循环int i0; icount; i。
duration [26]ms
加强For循环int i : lists。
duration [34]ms
Iterator循环list.iterator()。
duration [27]msArrayList遍历比较
普通For循环int i0; icount; i。
duration [26]ms
加强For循环int i : lists。
duration [27]ms
Iterator循环list.iterator()。
duration [28]ms总结 普通for循环耗时最少iterator次之增强for循环耗时最长。 二、Map遍历方式
大致分为 增强for循环 和 Iterator迭代器 两种而其中每个又各自分为使用 keySet() 和 entrySet() 两种所以 一共四种。
1、增强for循环 keySet() 遍历
for(String key : maps.keySet()){String str maps.get(key);
}2、增强for循环 entrySet() 遍历
for(Map.EntryString, String entry : maps.entrySet()){String str entry.getValue();
}3、Iterator keySet() 遍历
Iterator iterator maps.keySet().iterator();
while (iterator.hasNext()){String key iterator.next().toString();String str maps.get(key);
}4、Itorator entrySet() 遍历
Iterator iterator maps.entrySet().iterator();
while (iterator.hasNext()){Map.EntryString, String entry (Map.EntryString, String)iterator.next();String str entry.getValue();
}5、四种方式比较
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;public class HashMapFor {private static HashMapString,String initData(){HashMapString,String maps new HashMapString, String(10000000 * 2);for(int i0; i10000000; i){String key i abcdefg;maps.put(key, key);}return maps;}private static String forOne(HashMapString, String maps){StringBuilder sb new StringBuilder();sb.append(增强For循环 keySet()int i : map.keySet()。);sb.append(\r\n);long start System.currentTimeMillis();for(String key : maps.keySet()){String str maps.get(key);}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}private static String forTwo(HashMapString, String maps){StringBuilder sb new StringBuilder();sb.append(增强For循环 entrySet()Entry entry : map.entrySet()。);sb.append(\r\n);long start System.currentTimeMillis();for(Map.EntryString, String entry : maps.entrySet()){String str entry.getValue();}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}private static String forThree(HashMapString, String maps){StringBuilder sb new StringBuilder();sb.append(Iterator循环 keySet()map.keySet().iterator()。);sb.append(\r\n);long start System.currentTimeMillis();Iterator iterator maps.keySet().iterator();while (iterator.hasNext()){String key iterator.next().toString();String str maps.get(key);}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}private static String forFour(HashMapString, String maps){StringBuilder sb new StringBuilder();sb.append(Iterator循环 entrySet()map.entrySet().iterator()。);sb.append(\r\n);long start System.currentTimeMillis();Iterator iterator maps.entrySet().iterator();while (iterator.hasNext()){Map.EntryString, String entry (Map.EntryString, String)iterator.next();String str entry.getValue();}long end System.currentTimeMillis();sb.append(duration [ (end - start) ]ms);sb.append(\r\n);return sb.toString();}public static String forCycle(HashMapString, String maps) {StringBuilder sb new StringBuilder();sb.append(HashMap遍历比较);sb.append(\r\n);sb.append(forOne(maps));sb.append(forTwo(maps));sb.append(forThree(maps));sb.append(forFour(maps));return sb.toString();}public static void main(String[] args) {HashMapString, String maps initData();for(int i0; i5; i){System.out.println(forCycle(maps));}}
}运行结果
HashMap遍历比较
增强For循环 keySet()int i : map.keySet()。
duration [66]ms
增强For循环 entrySet()Entry entry : map.entrySet()。
duration [46]ms
Iterator循环 keySet()map.keySet().iterator()。
duration [68]ms
Iterator循环 entrySet()map.entrySet().iterator()。
duration [45]msHashMap遍历比较
增强For循环 keySet()int i : map.keySet()。
duration [63]ms
增强For循环 entrySet()Entry entry : map.entrySet()。
duration [44]ms
Iterator循环 keySet()map.keySet().iterator()。
duration [65]ms
Iterator循环 entrySet()map.entrySet().iterator()。
duration [47]msHashMap遍历比较
增强For循环 keySet()int i : map.keySet()。
duration [48]ms
增强For循环 entrySet()Entry entry : map.entrySet()。
duration [37]ms
Iterator循环 keySet()map.keySet().iterator()。
duration [72]ms
Iterator循环 entrySet()map.entrySet().iterator()。
duration [34]msHashMap遍历比较
增强For循环 keySet()int i : map.keySet()。
duration [54]ms
增强For循环 entrySet()Entry entry : map.entrySet()。
duration [41]ms
Iterator循环 keySet()map.keySet().iterator()。
duration [49]ms
Iterator循环 entrySet()map.entrySet().iterator()。
duration [34]msHashMap遍历比较
增强For循环 keySet()int i : map.keySet()。
duration [47]ms
增强For循环 entrySet()Entry entry : map.entrySet()。
duration [31]ms
Iterator循环 keySet()map.keySet().iterator()。
duration [47]ms
Iterator循环 entrySet()map.entrySet().iterator()。
duration [31]ms总结
entrySet() 比 keySet() 效率要好点Iterator 要比 for each 效率要好点所以Iterator entrySet() 效率最好参考需谨慎 三、java开发手册关于map的 推荐使用 entrySet 遍历 Map 集合 KV而不是使用 keySet 方式遍历 原因keySet 其实是遍历了2次一次是转为 Iterator 对象另一次是从 hashMap 中取出 key 所对应的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中效率更高。如果是JDK8使用 Map.foreach 方法。 正例values() 返回的是V值集合是一个 list 集合对象keySet() 返回的是 K值集合是一个Set集合对象entrySet() 返回的是 K-V值组合集合。