2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kotlin GroupByをまとめてみた

Last updated at Posted at 2021-09-06

Kotlin GroupByまとめ

Kotlinコレクションを操作してをGroupByしてまとめたい。ということでコード補完を・・・・・

って似たようなメソッドが5つもあるやないかい!!!:punch::angry::punch:

image.png

ということでこれらを全部調べてみました。

##1. groupBy(keySelector: (T) -> K): kotlin.collections.Map<K, kotlin.collections.List<T>>

どうやら要素からキーを生成してまとめるらしい。returnはMapでkeyが生成したキーでValueが要素と・・・・
はい。求めていたものはこれです。これで明日も安泰です。これで今夜もぐっすり眠れます。ということでサンプルコードを載せておきます。

// お友達の名簿をGroupBy
val friends: Map<Int, List<Friend>> = listOf(
    Friend("takashi", 19),
    Friend("satoshi", 20),
    Friend("takao", 21),
    Friend("sadap", 20),
    Friend("hideki", 20),
    Friend("rikio", 21),
).groupBy { it.age }

println("型:${friends.javaClass.kotlin}")
println("-------------------------------")
println("結果:${friends}")
型:class java.util.LinkedHashMap
-------------------------------
結果:{19=[Friend(name=takashi, age=19)], 20=[Friend(name=satoshi, age=20), Friend(name=sadap, age=20), Friend(name=hideki, age=20)], 21=[Friend(name=takao, age=21), Friend(name=rikio, age=21)]}

##2.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): kotlin.collections.Map<K, kotlin.collections.List<V>>
こちらは第一引数に要素からキーを生成する処理を渡し、第二引数にはValueを変化させる処理を渡せるようですね。

// お友達の名簿をGroupBy
val friends: Map<Int, List<String>> = listOf(
       Friend("takashi", 19),
       Friend("satoshi", 20),
       Friend("takao", 21),
       Friend("sadap", 20),
       Friend("hideki", 20),
       Friend("rikio", 21),
).groupBy(
       { it.age },
       { "Mr." + it.name } // ValueをFriend型からString型に変化
)

println("型:${friends.javaClass.kotlin}")
println("-------------------------------")
println("結果:${friends}")

型:class java.util.LinkedHashMap
-------------------------------
結果:{19=[Mr.takashi], 20=[Mr.satoshi, Mr.sadao, Mr.hideki], 21=[Mr.takao, Mr.rikio]}

疲れたのでまた今度追記します。見てくれてありがとうございました。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?