[Kotlin]Map(マップ)の要素を結合して文字列に変換するには?

Kotlin

どうも、ちょげ(@chogetarou)です。

Map(マップ)の要素を結合して文字列に変換する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Map(マップ)の要素を結合して文字列に変換する方法は、3つあります。

キーと値のペア

1つ目は、キーと値のペアを結合する方法です。

まず、map.entriesのように、Mapのentriesプロパティにアクセスします。

entriesプロパティからjoinToString()を呼び出します。

そして、joinToString()の引数「separator」に区切り文字を指定します。

val result = map.entries.joinToString(separator="区切り文字")

上記のjoinToString()は、Mapのキーと値のペアを結合した1つの文字列を返します。

また、文字列内では、1つの1つのペアが区切り文字ごとに区切られます。

joinToString()は、引数なしで呼び出せます。

引数を使わない場合は、デフォルトでカンマ( , )が区切り文字になります。

使用例

fun main() {
    val numbers = mapOf(
        "one" to 1,
        "two" to 2,
        "three" to 3,
        "four" to 4,
        "five" to 5,
    )
    
    val result = numbers.entries.joinToString(separator=" / ")
    val result2 = numbers.entries.joinToString()
    
    println(result)
    println(result2)
}
出力:
one=1 / two=2 / three=3 / four=4 / five=5
one=1, two=2, three=3, four=4, five=5

キー

2つ目は、キーを結合する方法です。

まず、map.keysのように、Mapのkeysにアクセスします。

keysからjoinToString()を呼び出します。

そして、joinToString()の引数「separator」に区切り文字を指定します。

val result = map.keys.joinToString(separator="区切り文字")

上記のjoinToString()は、Mapのキーを結合した1つの文字列を返します。

また、文字列内では、1つの1つのキーが区切り文字ごとに区切られます。

joinToString()は、引数なしで呼び出せます。

引数を使わない場合は、デフォルトでカンマ( , )が区切り文字になります。

使用例

fun main() {
    val numbers = mapOf(
        "one" to 1,
        "two" to 2,
        "three" to 3,
        "four" to 4,
        "five" to 5
    )
    
    val result = numbers.keys.joinToString()
    val result2 = numbers.keys.joinToString(separator="/")
    
    println(result)
    println(result2)
}
出力:
one, two, three, four, five
one/two/three/four/five

3つ目は、値を結合する方法です。

まず、map.valuesのように、Mapのvaluesにアクセスします。

valuesからjoinToString()を呼び出します。

そして、joinToString()の引数「separator」に区切り文字を指定します。

val result = map.values.joinToString(separator="区切り文字")

上記のjoinToString()は、Mapの値を結合した1つの文字列を返します。

また、文字列内では、1つの1つの値が区切り文字ごとに区切られます。

もし、Mapの値を重複なしで結合したい場合は、joinToString()の前にdistinct()を呼び出します。

val result = map.values.distinct().joinToString(separator="区切り文字")

joinToString()は、引数なしで呼び出せます。

引数を使わない場合は、デフォルトでカンマ( , )が区切り文字になります。

使用例1

fun main() {
    val numbers = mapOf(
        "one" to 1,
        "two" to 2,
        "three" to 3,
        "four" to 4,
        "five" to 5
    )
    
    val result = numbers.values.joinToString(separator="+")
    val result2 = numbers.values.joinToString()
    
    println(result)
    println(result2)
}
出力:
1+2+3+4+5
1, 2, 3, 4, 5

使用例2

fun main() {
    val numbers = mapOf(
        "one" to 1,
        "two" to 2,
        "いち" to 1,
        "three" to 3,
        "four" to 4,
        "five" to 5,
        "一" to 1
    )
    
    val result = numbers.values.distinct().joinToString(separator=" / ")
    
    println(result)
}
出力:
1 / 2 / 3 / 4 / 5

まとめ

Map(マップ)を結合して文字列に変換する方法は、次の3つです。

  • キーと値のペアを結合する方法
    val result = map.entries.joinToString(separator="区切り文字")
  • キーを結合する方法
    val result = map.keys.joinToString(separator="区切り文字")
  • 値を結合する方法
    val result = map.values.joinToString(separator=”区切り文字”)

コメント

タイトルとURLをコピーしました