如何在 Kotlin 中迭代 HashMap?


Map 是一種鍵值對儲存資料的集合,其中對應的鍵必須唯一。HashMap 是基於 MutableMap 介面的集合類,它透過實現 HashTable 的 MutableMap 介面來實現這一點。Kotlin 提供四種類型的建構函式來定義和操作 HashMap。

  • HashMap() – 這是預設建構函式,它可以幫助我們建立一個空的 HashMap。

  • HashMap(initialCapacity: Int, loadFactor: Float = 0f) – 它可以幫助我們使用初始容量建立一個 HashMap;如果未提供,則將被忽略,並將充當預設的 HashMap()。

  • HashMap(initialCapacity: Int) – 它可以幫助我們建立一個具有指定容量的 HashMap。

  • HashMap(original: Map <out K, V>) – 它根據 Map 中指定的建立 HashMap 例項。

在這裡,我們將使用HashMap() 建構函式建立一個 HashMap,並使用其對應的Put() 函式用一些鍵值資料填充它。在這個例子中,我們將建立一個“科目”集合,它將儲存科目名稱和我們的個人偏好編號。我們將使用 Kotlin 庫中提供的不同選項來迭代此 HashMap。

使用 for() 迴圈迭代

在傳統的程式語言中,我們使用for() 迴圈遍歷任何集合。在下面的例子中,我們將使用for() 迴圈遍歷 Map。

示例

fun main(args: Array<String>) {
   //Declare HashMap
   var subject : HashMap<String, Int>
      = HashMap<String, Int> ();

   //Assigning value to HashMap
   subject.put("Java" , 1);
   subject.put("Kotlin" , 2);
   subject.put("Python" , 3);
   subject.put("C++" , 4);
   subject.put("SQL" , 5);

   //iterate through for loop
   println("---------iterate using for Loop------------
") for ((k, v) in subject) { println(" Subject Name -> $k and its preference -> $v") } println("

") }

輸出

執行程式碼後,將生成以下輸出:

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar

---------iterate using for Loop------------
Subject Name -> Java and its preference -> 1
Subject Name -> C++ and its preference -> 4
Subject Name -> Kotlin and its preference -> 2
Subject Name -> Python and its preference -> 3
Subject Name -> SQL and its preference -> 5

使用 ForEach() 迴圈迭代

除了 for() 迴圈之外,我們還可以使用 ForEach() 來遍歷集合。在下面的例子中,我們將使用 forEach() 迴圈遍歷 Map。

示例

fun main(args: Array<String>) {
   //Declare HashMap
   var subject : HashMap<String, Int>
      = HashMap<String, Int> ();

   //Assigning value to HashMap
   subject.put("Java" , 1);
   subject.put("Kotlin" , 2);
   subject.put("Python" , 3);
   subject.put("C++" , 4);
   subject.put("SQL" , 5);

   //iterate using forEach
   println("------iterate using forEach Method---------
") subject.forEach { (k, v) -> println(" Subject Name -> $k and its preference -> $v") } println("

") }

輸出

執行程式碼後,將生成以下輸出:

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar

------iterate using forEach Method---------
Subject Name -> Java and its preference -> 1
Subject Name -> C++ and its preference -> 4
Subject Name -> Kotlin and its preference -> 2
Subject Name -> Python and its preference -> 3
Subject Name -> SQL and its preference -> 5

使用 iterator() 方法

除了上述遍歷集合的傳統方法外,Kotlin 標準庫還提供了一個名為iterator() 的函式,我們可以使用它來訪問集合中的物件,而無需公開其值。這是訪問集合所有值的最高效方法。在下面的例子中,我們將使用iterator() 方法遍歷 HashMap。

示例

fun main(args: Array<String>) {
   //Declare HashMap
   var subject : HashMap<String, Int>
      = HashMap<String, Int> ();

   //Assigning value to HashMap
   subject.put("Java" , 1);
   subject.put("Kotlin" , 2);
   subject.put("Python" , 3);
   subject.put("C++" , 4);
   subject.put("SQL" , 5);

   //using iterator() method
   println("-----------Using iterator() Method-----------
")    val i = subject.keys.iterator()    while (i.hasNext()) {       val key = i.next()       val value = subject[key]       println("Subject Name -> ${key} and its preference -> $value") } }

輸出

執行程式碼後,將生成以下輸出:

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar

-----------Using iterator() Method-----------
Subject Name -> Java and its preference -> 1
Subject Name -> C++ and its preference -> 4
Subject Name -> Kotlin and its preference -> 2
Subject Name -> Python and its preference -> 3
Subject Name -> SQL and its preference -> 5

更新於:2021年10月27日

2K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告