1. 程式人生 > >HashMap遍歷的三種方式,entrySet()和keySet() 還有Java8的foreach

HashMap遍歷的三種方式,entrySet()和keySet() 還有Java8的foreach

第一種:
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();
}

 第一種效率高,以後一定要使用此種方式!

第二種:
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
    Object key = iter.next();
    Object val = map.get(key);
}
第二種

效率低,以後儘量少使用! 

      理由:對於keySet其實是遍歷了2次,一次是轉為iterator,一次就從HashMap中取出key所對於的value。而entryset只是遍歷了第一次,他把key和value都放到了entry中,遍歷的開銷就少很多,所以效率更高。

     ---更新----

第三種:Java8中遍歷map簡直太簡單了

Map map = new HashMap(); 

map.forEach((k,v) -> {

    //你想做的事(k就是 map的key ,v 就是value)

})

~不喜歡籃球的攝影師不是一個好程式設計師~

相關推薦

HashMap方式entrySet()keySet() 還有Java8的foreach

第一種: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) {     Map.Entry entry = (Map.Entry) iter.n

opencv學習(五)之畫素方式耗時分析

前面用兩篇介紹了畫素的顏色空間縮減、查詢表、遍歷畫素的三種方式、程式計時等,也說了一下每種方法的優缺點,現在用一個綜合型的程式進行對比。方式是用三種方式對lena影象(220x220)進行處理,使其顏色種類從256中變成64種。在顏色空間縮減方法中講過這種方式,

List方法:1.for 2.增強性for 3.叠代器

arr ast pub next() ati i++ 元素 叠代 port package chapter09; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /* *

Linux下修改Mysql密碼的方式測試過效果能正常使用

密碼 root mysq cat 服務 方法 方式 運行 mysql密碼 個人分類: mysql修改密碼linux修改mysql密碼軟件編程 有時我們會忘記Mysql的密碼,或者想改一個密碼,以下將對這兩種情況修改密碼的三種解決方法做個總結 本文都以用戶為 root 為例;

Python基礎(四)--- Python多執行緒介紹開啟執行緒的方式time模組joinDaemonLock、Rlock事件機制Timer

一、多執行緒介紹 --------------------------------------------------------- 1.threading用於提供執行緒相關的操作,執行緒是應用程式中工作的最小單元。 2.python當前版本的多執行緒庫沒有實現優先順序、執行緒組,執

二叉樹方式

數結構 public class TreeNode { public TreeNode left; public TreeNode right; int val; ... } 先序(遞迴) public void preOrder(TreeNode root){

awk執行的方式以及awk以shell指令碼檔案形式執行的注意事項

awk執行有三種形式: 1.直接以命令列來執行,如圖: 2.以awk指令碼檔案來執行 需要加-f選項。 3.以shell指令碼的形式來執行         以shell指令碼形式執行時,行首的#!/bin/bash 需變換為#!/bin/awk(awk所在的路徑

java中內部類的建立四情況方式及內部資料訪問許可權

內部類和外部類的關係,及內部靜態類的資料訪問許可權,宣告方式。 第一種,在外部類內部宣告使用內部類,內部類的型別為static和非 static型別,內部類資料型別為private,protected,public 型別的訪問許可權。外部類為非靜態宣告和許可權如下: p

方式比較

package main import ( "fmt" ) // make func main() { list := []int{0, 1, 2, 3} list = Test(list) fmt.Println(list) list1 := []int{0,

Java 多執行緒傳值有方式以及另類的第四方式

現在博主的需求是:有可能在同一個執行緒類執行不一樣的程式。上邊兩個紅框中的cron4j排程器使用的是一個,根據引數不同來執行的。如果我點選後邊的手動執行一次,按照我上邊給出的java程式碼是無法實現的。看下邊的新的程式碼: (adsbygoogle = window.adsbygoo

java反射class的方式反射建立物件的兩方式

反射中,欲獲取一個類或者呼叫某個類的方法,首先要獲取到該類的 Class 物件。 1、獲取Class物件 在 Java API 中,提供了獲取 Class 類物件的三種方法: 第一種,使用 Class.forName 靜態方法。 前提:已明確類的全路徑名。 第二種,

Spring管理的bean初始化方法的方式以及@PostConstruct不起作用的原因

1:Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作

檔案下載的方式看這裡就已經足夠了。

檔案下載一(不支援斷點續傳) 這種下載方式用的場合比較少,邏輯比較複雜,程式碼量也比較大。 主要的處理在兩個代理方法中 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLRes

最大子陣列問題(方式java實現)

1.動態規劃,時間複雜度為n /** * 動態規劃 : 時間複雜度n * @param arr * @return */ public static Integer maxSubAr

Map集合方式區別效能

Map<String,String> map = new HashMap<String,String>();map.put("01", "zhangsan");map.put("02", "lisi");map.put("03", "wangwu");Collection<Str

form表單提交方式demo例項詳解

第一種:使用type=submit 可以直接提交<html> <head> <title>submit直接提交</title> </head> <body> <!-- 表單的提交方

六、AcriveMQ集群配置的方式以及組合實現

nec 隨機 brush ast 一個隊列 項目 uri 文件 rand AcriveMQ集群配置 ·實現高可用,以排除單點故障引起的服務中斷 ·實現負載均衡以提升效率為更多客戶提供服務 集群方式

向伺服器傳送請求的方式 and 轉發重定向的區別

1.三種方式:      1.html超連結      2.form表單      3.AJAX技術 例子:不通過超連結和表單訪問伺服器,還有其他方式:可以通過Ajax技術訪問伺服器 js程式碼: <script type="text/javascript"

實現多執行緒的兩方式區別好處有哪些

 一種是擴充套件java.lang.Thread類 另一種是實現java.lang.Runnable介面 區別就是:第一種是擴充套件,第二種是實現 好處就是: 在實際開發中通常以實現Runnable介面為主,因為實現Runnable介面相比繼承Thread類可以避免繼承的侷

併發程式設計學習總結(一) :java 建立執行緒的方式的優缺點例項

java 建立執行緒有三種方式: (一)  實現Runnable介面          優點:(1) 建立執行緒的同時可以繼承其他的類,從而可以擴充套件類的功能。