스칼라에서 목록을 맵으로 변환

Suraj P 2023년1월30일
  1. 스칼라의 목록과 지도
  2. 스칼라에서 목록을 맵으로 변환
스칼라에서 목록을 맵으로 변환

이 기사에서는 스칼라에서 목록을 맵으로 변환하는 방법을 설명합니다.

스칼라의 목록과 지도

먼저 List와 Map에 대한 간략한 정의를 살펴보자.

  1. 목록은 비슷한 종류의 불변 데이터의 모음입니다. 스칼라에서 연결 리스트를 표현하기 위해 사용합니다.

    통사론:

    list_name = List( element1, element2 , element3....)
    

    예시:

    val fruits = List("Orange", "Apple" , "Mango" )
    
  2. Scala의 맵은 키-값 쌍의 모음입니다. 키는 항상 고유하지만 값은 반복될 수 있습니다. 데이터 검색에 매우 유용합니다.

    Scala의 맵은 변경 불가능하거나 변경 가능하지만 기본적으로는 변경할 수 없습니다.

    통사론:

    map_name = Map(key1->value1, key2->value2, key3->value3 ....)
    

    예시:

    val marks = Map("tony" -> 30, "bruce" -> 20,"Iron Man" -> 50)
    

스칼라에서 목록을 맵으로 변환

Scala에서 목록을 지도로 변환하기 위해 toMap 방법을 사용합니다. 지도에는 한 쌍의 값, 즉 키-값 쌍이 포함되어 있는 반면 목록에는 단일 값만 포함된다는 점을 기억해야 합니다.

따라서 두 가지 방법이 있습니다.

  1. zipWithIndex 메서드를 사용하여 목록에 키로 인덱스를 추가합니다.
  2. 하나는 키로 간주하고 다른 하나는 값으로 간주하여 두 목록을 병합합니다.

Scala의 zipWithIndex 메소드

zipWithIndex 메소드와 Scala의 toMap 메소드를 사용하여 목록에 키를 추가합니다.

통사론:

map_name = list_name.zipWithIndex.map{ case(k,v) => (v,)}.toMap

예제 코드:

object myClass {

    def main(args: Array[String]) {

        val fruits = List("Apple", "Orange" , "Watermelon" , "Mango")
        val map = fruits.zipWithIndex.map{ case (k,v) => (v,k) }.toMap

        println("The values of map : "+ map)
    }
}

출력:

The values of map : Map(0 -> Apple, 1 -> Orange, 2 -> Watermelon, 3 -> Mango)

위의 코드에서 우리는 다른 과일의 이름을 포함하는 fruits 목록을 만들었습니다. 목록을 지도로 변환하는 toMap 메소드가 있습니다.

목록에는 단일 값만 포함됩니다. zipWithIndex 메서드를 사용하여 0부터 모든 목록 요소까지 인덱스 값을 키로 추가했습니다.

Scala에서 두 개의 목록을 병합하여 목록을 맵으로 변환

두 개의 목록을 병합하여 지도를 만들 수 있습니다. 여기에서 하나의 목록을 키로 사용하고 다른 하나를 끝에 값으로 사용하여 맵에 대한 키-값 쌍을 만듭니다.

두 목록을 병합할 때 염두에 두어야 할 몇 가지 사항은 다음과 같습니다.

  1. 키로 사용하는 목록에는 고유한 요소가 있어야 합니다. 요소가 고유한 경우 이후 요소가 고려됩니다.
  2. 두 목록에는 동일한 수의 요소가 있어야 합니다. 모든 키에 값이 있어야 합니다. 그렇지 않은 경우 목록의 초과 요소는 무시됩니다.

통사론:

val map_name = (list_1 zip list_2).toMap

예제 코드:

object myClass {

    def main(args: Array[String]) {

        val names = List("Tony", "Bruce" , "Strange" , "Iron Man")
        val marks = List(33 ,56 ,89 ,99)
        val result = (names zip marks).toMap

        println("The values of map : "+ result)
    }
}

출력:

The values of map : Map(Tony -> 33, Bruce -> 56, Strange -> 89, Iron Man -> 99)

위 코드에는 namesmarks라는 두 개의 목록이 있습니다. 우리는 toMap 방법을 사용하여 목록을 지도로 변환하고 목록 names을 키로 사용하고 목록 marks를 값으로 사용하고 zip을 사용하여 이들을 병합하여 결과 맵 result에 저장했다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

관련 문장 - Scala List