Kotlin ArrayList 重叠值加上?
Kotlin ArrayList overlapping value plus?
我正在使用 ArrayList。
我想得到这些的总和。
ex ) 苹果 = 9,300,香蕉 = 5,400
但是这些都是流畅添加的。
我不知道该怎么办。
class Statement_data(var name : String, var Value : Int) {
}
名称值
苹果 3,000
苹果 3,100
香蕉 2,000
橙色 1,500
苹果 3,200
浆果 3,500
香蕉 3,400
橙色 1,600
您应该使用 groupBy
运算符:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html
val list = listOf(
Statement_data("Apple",9300),
...
)
val map = list.groupBy { it.name}
这将 return 一个 Map。然后你可以使用 sumBy
运算符,在你的情况下:
val applesCount = map["Apple"].sumBy{ it.Value }
有关详细信息,请参阅文档:
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sum-by.html
您可以按名称过滤,然后对值使用 sumBy
。使用 asSequence()
是可选的,但它允许它在过滤时跳过复制列表内容。
val numApples = list.asSequence().filter { it.name == "Apple" }.sumBy(Statement_data::Value)
我正在使用 ArrayList。
我想得到这些的总和。
ex ) 苹果 = 9,300,香蕉 = 5,400
但是这些都是流畅添加的。
我不知道该怎么办。
class Statement_data(var name : String, var Value : Int) {
}
名称值 苹果 3,000 苹果 3,100 香蕉 2,000 橙色 1,500 苹果 3,200 浆果 3,500 香蕉 3,400 橙色 1,600
您应该使用 groupBy
运算符:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html
val list = listOf(
Statement_data("Apple",9300),
...
)
val map = list.groupBy { it.name}
这将 return 一个 MapsumBy
运算符,在你的情况下:
val applesCount = map["Apple"].sumBy{ it.Value }
有关详细信息,请参阅文档: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sum-by.html
您可以按名称过滤,然后对值使用 sumBy
。使用 asSequence()
是可选的,但它允许它在过滤时跳过复制列表内容。
val numApples = list.asSequence().filter { it.name == "Apple" }.sumBy(Statement_data::Value)