如何在 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+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.