Iterator (迭代器)遍歷效率比較

第一種:(效率高,以后一定要使用此種方式?。?/h3>
  Map map = new HashMap();
  Iterator iter = map.entrySet().iterator();
  while (iter.hasNext()) {
  Map.Entry entry = (Map.Entry) iter.next();
  Object key = entry.getKey();
  Object val = entry.getValue();
  }

第二種:(效率低,以后盡量少使用?。?/h3>
  Map map = new HashMap();
  Iterator iter = map.keySet().iterator();
  while (iter.hasNext()) {
  Object key = iter.next();
  Object val = map.get(key);
  }

HashMap的遍歷有兩種常用的方法,那就是使用keyset及entryset來進(jìn)行遍歷,但兩者的遍歷速度是有差別的,下面請看實(shí)例:

  public class HashMapTest {
  public static void main(String[] args) {
  HashMap hashmap = new HashMap();
  for (int i = 0; i < 1000; i ){
  hashmap.put("" i, "thanks");
  }
  long bs = Calendar.getInstance().getTimeInMillis();
  Iterator iterator = hashmap.keySet().iterator();
  while (iterator.hasNext()){
  System.out.print(hashmap.get(iterator.next()));
  }
  System.out.println();
  System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  listHashMap();
  }
  public static void listHashMap() {
  java.util.HashMap hashmap = new java.util.HashMap();
  for (int i = 0; i < 1000; i ) {
  hashmap.put("" i, "thanks");
  }
  long bs = Calendar.getInstance().getTimeInMillis();
  java.util.Iterator it = hashmap.entrySet().iterator();
  while (it.hasNext()) {
  java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
  // entry.getKey() 返回與此項(xiàng)對應(yīng)的鍵
  // entry.getValue() 返回與此項(xiàng)對應(yīng)的值
  System.out.print(entry.getValue());
  }
  System.out.println();
  System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
  }
  }

對于keySet其實(shí)是遍歷了2次,一次是轉(zhuǎn)為iterator,一次就從hashmap中取出key所對于的value。而entryset只是遍歷了第一次,他把key和value都放到了entry中,所以就快了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 4,183評論 2 8
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,653評論 18 399
  • 實(shí)際上,HashSet 和 HashMap 之間有很多相似之處,對于 HashSet 而言,系統(tǒng)采用 Hash 算...
    曹振華閱讀 2,561評論 1 37
  • 迭代器介紹 所有實(shí)現(xiàn)了Collection接口的容器類都有一個iterator方法用以返回一個實(shí)現(xiàn)了Iterato...
    全棧JAVA筆記閱讀 581評論 0 2
  • 感恩去廣州的團(tuán)隊(duì)的伙伴發(fā)來的精彩片段,期待下個月開始的線上特訓(xùn)!感恩又有金錢進(jìn)賬了,感恩早上可以聽著鳥兒的歌聲,這...
    碧霞閱讀 177評論 0 0

友情鏈接更多精彩內(nèi)容