如何在 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