Computer >> 컴퓨터 >  >> 프로그램 작성 >> Android

Kotlin에서 Hashmap을 반복하는 방법은 무엇입니까?

<시간/>

Map은 데이터가 키-값 쌍으로 저장되고 해당 키는 고유해야 하는 컬렉션입니다. HashMap은 MutableMap 인터페이스를 기반으로 하는 컬렉션 클래스로, HashTable의 MutableMap 인터페이스를 구현하여 구현합니다. Kotlin은 HashMap을 정의하고 조작하기 위해 4가지 유형의 생성자를 제공합니다.

  • 해시맵() – 빈 HashMap을 만드는 데 도움이 되는 기본 생성자입니다.

  • HashMap(initialCapacity:Int, loadFactor:Float =0f) – 초기 용량을 사용하여 HashMap을 만드는 데 도움이 됩니다. 제공하지 않으면 무시되고 기본 HashMap()으로 작동합니다.

  • 해시맵(initialCapacity:Int) – 주어진 용량으로 HashMap을 생성하는 데 도움이 됩니다.

  • HashMap(원본:Map ) – Map에 지정된 대로 HashMap의 인스턴스를 생성합니다.

여기서는 HashMap()을 사용합니다. HashMap 및 해당 Put()을 생성하는 생성자 일부 키-값 데이터로 동일한 항목을 채웁니다. 이 예에서는 주제 이름과 개인 기본 설정 번호를 보유할 "주제" 컬렉션을 만듭니다. Kotlin 라이브러리에서 사용할 수 있는 다양한 옵션을 사용하여 이 HashMap을 반복합니다.

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()라는 함수도 제공합니다. 동일한 값을 노출하지 않고 컬렉션의 개체에 액세스하는 데 사용할 수 있습니다. 이것은 컬렉션의 모든 값에 액세스하는 가장 효율적인 방법입니다. 다음 예에서는 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