这里是列表的例子。我想在值(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/