kotlin - 如何获取数组 Kotlin 中特定值的大小

这里是列表的例子。我想在值(value)会变得更高的地方变得动态。

val list = arrayListOf("A", "B", "C", "A", "A", "B") //Maybe they will be more 

我想要这样的输出:-

val result = list[i] + " size: " + list[i].size

因此输出将显示每个具有大小的字符串。

A size: 3
B size: 2
C size: 1

如果我增加更多的值(value),那么结果也会增加。

最佳答案

您可以使用 groupBy这样:

val result = list.groupBy { it }.map { it.key to it.value.size }.toMap()

Jeoffrey's方法实际上更好,因为他使用的是 .mapValues()直接,而不是额外调用 .toMap() .我只是把这个答案留给她因为 我相信我提供的其他信息是相关的。

这将给出 Map<String, Int> , 其中Int是出现的次数。

result当你改变原来的时候不会改变list .这不是语言的工作方式。如果你想要那样的东西,你需要做很多工作,比如覆盖 add从您的收藏中使用函数来刷新 result map 。

此外,我认为您没有理由使用 ArrayList ,特别是因为您希望增加该集合的大小,所以我会坚持使用 MutableList如果我是你。

https://stackoverflow.com/questions/67808016/

相关文章:

google-cloud-platform - 请求中的资源字段值无效

javascript - 使 href 中带有哈希 (#) 的每个 anchor 标记都不可点击

javascript - 如何使用对象从对象数组javascript中删除它?

git - 如何在 git pull 之前预览更改

loops - 为什么内循环收集不返回结果?

javascript - React Native FlatList 刷新不起作用

python - Tensorflow Metal 插件已注册错误

awk - 从使用 sed 获得的部分中获取上面的 N 行

perl - "!$@"在 Perl 中是什么意思?

javascript - 如何在reactjs中将csv文件数据转换为json对象?