Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

จะวนซ้ำ Hashmap ใน Kotlin ได้อย่างไร?


แผนที่คือคอลเลกชั่นที่จัดเก็บข้อมูลเป็นคู่คีย์-ค่า และคีย์ที่เกี่ยวข้องจะต้องไม่ซ้ำกัน HashMap เป็นคลาสคอลเลกชันที่อิงตามอินเทอร์เฟซ MutableMap และทำโดยการใช้ MutableMapinterface ของ HashTable Kotlin มีตัวสร้างสี่ประเภทเพื่อกำหนดและจัดการ HashMap

  • HashMap() – เป็นคอนสตรัคเตอร์เริ่มต้นซึ่งช่วยให้เราสร้าง HashMap ที่ว่างเปล่า

  • HashMap(ค่าเริ่มต้น:Int, loadFactor:Float =0f) – ช่วยให้เราสร้าง HashMap โดยใช้ความจุเริ่มต้น หากไม่ได้ระบุไว้ ระบบจะละเว้นและทำหน้าที่เป็น HashMap() เริ่มต้น

  • HashMap (ความจุเริ่มต้น:Int) – ช่วยให้เราสร้าง HashMap ด้วยความจุที่กำหนด

  • HashMap(ต้นฉบับ:แผนที่ <ออก K, V>) – มันสร้างอินสแตนซ์ของ HashMap ตามที่ระบุไว้ในแผนที่

เราจะใช้ HashMap() ตัวสร้างเพื่อสร้าง HashMap และ Put() . ที่เกี่ยวข้อง เพื่อเติมข้อมูลคีย์-ค่าบางอย่างเหมือนกัน ในตัวอย่างนี้ เราจะสร้างคอลเลกชันของ "หัวเรื่อง" ซึ่งจะเก็บชื่อเรื่องและหมายเลขความชอบส่วนบุคคลของเรา เราจะทำซ้ำผ่าน HashMap นี้โดยใช้ตัวเลือกต่างๆ ที่มีอยู่ในไลบรารี Kotlin

วนซ้ำโดยใช้ for() วนซ้ำ

ในภาษาโปรแกรมทั่วไป เรามี for() วนซ้ำเพื่อสำรวจคอลเลกชันใด ๆ ในตัวอย่างต่อไปนี้ เราจะสำรวจผ่านแผนที่โดยใช้ for() วนซ้ำ

ตัวอย่าง

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------------\n")
   for ((k, v) in subject) {
      println(" Subject Name -> $k and its preference -> $v")
   }
   println("\n\n")
}

ผลลัพธ์

เมื่อคุณรันโค้ด มันจะสร้างผลลัพธ์ต่อไปนี้ -

$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()

ตัวอย่าง

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---------\n")
   subject.forEach { (k, v) ->
      println(" Subject Name -> $k and its preference -> $v")
   }
   println("\n\n")
}

ผลลัพธ์

เมื่อคุณรันโค้ด มันจะสร้างผลลัพธ์ต่อไปนี้ -

$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() ที่เราสามารถใช้เพื่อเข้าถึงวัตถุในคอลเลกชันโดยไม่เปิดเผยค่าของสิ่งเดียวกัน นี่เป็นวิธีที่มีประสิทธิภาพที่สุดในการเข้าถึงค่าทั้งหมดของคอลเล็กชัน ในตัวอย่างต่อไปนี้ เราจะสำรวจ Hashmap โดยใช้ iterator() วิธีการ

ตัวอย่าง

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-----------\n")
   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