2017-07-04 98 views
2

假設我有一個下列類的對象列表。如何在Kotlin中使用GROUP BY計算COUNT(*)?

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

我想檢索一個Map<String, Int>它將名稱映射到其出現次數。

在基於SQL的數據庫我會查詢:

SELECT name, count(*) FROM Contact; 

什麼是高階函數爲此在科特林的最佳方式?

回答

10

如果接觸的類型是List<Contact>你可以做以下的:

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

numOccurencesMapMap<String, Int>類型。

2
 val contacts = ArrayList<Contact>() 
     val occurences: Map<String, Int> 
     occurences = contacts.groupingBy { it.name }.eachCount() 
+1

這是我的方法的確切副本,不是嗎? :( –