こんにちは😀
今回は、マップを使用して集合体をつくってみます。
キーを数字に値を文字列にしたマップから文字列のリストを作成することができます。
書いてみましょう。
まずは、Int型とString型を引数にもつgetNumber関数を作成します。
fun getNumber(number:Int, shina:String)=”${number}番は、${shina}がもらえます。”
次に、main関数です。
9行目にマップを使用して、ラムダ式の中でgetNumber関数を呼んでいます。
さらにforEach関数を使用して書き出しているので、生成したリストを別の変数で受け取る処理は必要ありません。
fun main(args: Array<String>) { val mapA = mapOf( 1 to “腕時計”, 2 to “掃除機”, 3 to “コーヒーメーカー” ) val listA = mapA.map{(a,b)->getNumber(a,b)}.forEach { println(it) } }
実行します。
マップの処理した文字列が順に出力されています。
さらに、次の処理はマップを条件でフィルタしています。
以下の処理では、「filterValues」を使用して「マップの値の文字列が3字より大きい」条件を付けています。
(なお、キーを条件にする場合は、「filterkeys」を使用します。)
forEach関数内では、getNumber関数の引数にマップのキーと値を渡して、取得した文字列を出力しています。
fun main(args: Array<String>) { val mapA = mapOf( 1 to “腕時計”, 2 to “掃除機”, 3 to “コーヒーメーカー” ) mapA.filterValues { it.length>3 }.forEach{a,b->println(getNumber(a,b))} }
実行します。
条件に合致するのは「コーヒーメーカー」だけなので、3番目の文字列が出力されています。
キーと値をもつマップもリストと同じように短く処理を書くことができます。
今回はここまで🤚
次回からはクラスの応用をみていきます。
では、また次回。