gpt4 book ai didi

java - 如何通过某些属性将 List 分组到另一个 List
转载 作者:行者123 更新时间:2023-12-02 01:31:52 25 4
gpt4 key购买 nike

我正在尝试对 List<Object> 进行分组其中包含

Exercice, type, User, passed, ..

还有更多,但这些是最重要的,问题是我得到了一个很长的列表,所以我想将其分组:

Type, User, NumberOfPassed, NumberOfFaileds

例如我有:

Exercice1, hand, Hans@gmail.com, true
Exercice2, hand, Hans@gmail.com, false
Exercice3, hand, Hans@gmail.com, false
Exercice4, hand, Hans@gmail.com, false
Exercice2, hand, Thiago@gmail.com, true
Exercice1, hand, Thiago@gmail.com, true

输出应该是

Hand, Hans@gmail.com, 1/4
Hand, Thiago@gmail.com, 2/2

最佳答案

鉴于您的数据类如下所示:

data class UserData(
val exercise: String,
val type: String,
val emailAddress: String,
val passed: Boolean
)

您可以先按type分组和emailAddress使用Pair作为结果 map 的关键:

val groupingMap = l.groupBy{ it.type to it.emailAddress }

groupingMap类型为:Map<Pair<String, String>, List<UserData>>

之后,您可以使用 forEach 迭代该 map 。像这样:

resultMap.forEach { (groupKey, list) ->
val numElements = list.count()
val numTrueElements = list.count { it.passed }
val (type, emailAddress) = groupKey
println("$type, $emailAddress, $numTrueElements/$numElements")
}

结果:

hand, Hans@gmail.com, 1/4
hand, Thiago@gmail.com, 2/2

可能有更适合 type 的类型甚至可能exercise (这取决于用例)但为了这个例子,我选择了 String .

关于java - 如何通过某些属性将 List<Object> 分组到另一个 List<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55893129/

25 4 0