キーによる関連付け
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 39/63。
associateByは、計算されたキーから元の要素へのマップを作成します。キーが重複する場合、そのキーに対する最後の要素が優先されます。一致するすべての要素を残す必要がある場合はgroupByを使用し、キーごとに最新の要素を1つだけ取得する場合はassociateByを使用します。
mainの中:
val latest = listOf("a", "to", "b").associateBy { it.length }
println(latest[1])a と b はどちらもキーが 1 なので、そのキーでは b が a を置き換えます。
associateByは、計算されたキーが重複した場合、最後の要素を保持します。
チャレンジ
中級パラメータ words: List<String> と length: Int を使用して lastOfLength を完成させてください。単語の長さをキーとして associateBy を使用してください。指定された長さの入力単語のうち最後のものを返し、存在しない場合は missing を返してください。
上記でより厳しい制限が示されていない限り、コレクションは各レベルで最大100個の要素を含み、整数の引数および整数コレクションの値は-1000から1000の範囲です。解析対象のテキストには、説明にあるように無効または範囲外の表現が含まれる場合があります。
型 String の値を返してください。提供された入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは個数の後に要素が続く形式で始まり、マップはエントリ数の後に各キーと値が続く形式で始まります。ネストされたリストでは、各行について個数と要素の形式を繰り返します。提供された main は、戻り値の後に改行を1つ出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun lastOfLength(words: List<String>, length: Int): String {
// ここに解答を書いてください。
return ""
}
fun main() {
val wordsCount = readln().toInt()
val words = mutableListOf<String>()
for (i0 in 0 until wordsCount) {
val wordsItem = readLine().orEmpty()
words.add(wordsItem)
}
val length = readln().toInt()
println(lastOfLength(words, length))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド