web-dev-qa-db-ja.com

KotlinでGROUP BYを使用してCOUNT(*)を実行する方法

次のクラスのオブジェクトのリストがあるとします。

class Contact(
    val name: String
    // ...
)

名前を出現回数にマップするMap<String, Int>を取得したいと思います。

SQLベースのデータベースでは、次のクエリを実行します。

SELECT name, count(*) FROM Contact GROUP BY name;

高次関数を使用してKotlinでこれを行う最良の方法は何ですか?

16
Willi Mentzel

連絡先のタイプがList<Contact>の場合、次のことができます。

val numOccurencesMap = contacts.groupingBy { it.name }.eachCount()

numOccurencesMapMap<String, Int>タイプになります。

28
Willi Mentzel