gpt4 book ai didi

kotlin - 我可以指示 Kotlin 关联第一个元素而不是与键提取器匹配的最后一个元素吗?

转载 作者:行者123 更新时间:2023-12-03 08:17:55 25 4
gpt4 key购买 nike

考虑这个很好的例子:

listOf(Pair(1, "a"), Pair(2, "b"), Pair(1, "b")).associateBy { it.first }

输出将最后一个值与每个键相关联:

> (1 to "b", 2 to "b")

有没有办法获得相反的行为?即,将第一个值与键相关联?

> (1 to "a", 2 to "b")

我知道我可以对列表进行排序,使用groupingBy+reduce等,但假设列表很大并且性能成为一个问题。所以我想知道是否有什么方法可以告诉 Kotlin 我打算如何合并我的记录

与Java的Collectors方法类似:

Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper,
BinaryOperator<U> mergeFunction)

我可以在哪里指定合并函数:

Collectors.toMap(Pair::value1(), Pair::value2(), (first, second) -> first)

最佳答案

只需提前反转它(第一个项目将覆盖最新的,因为它们现在是最新的):

listOf(Pair(1, "a"), Pair(2, "b"), Pair(1, "b")).asReversed().toMap() // {1=a, 2=b}

开销是微不足道的,asReversed方法不会创建原始列表的反向副本,它只是创建一个带有重写的get方法的简单包装器,委托(delegate)所有调用到原始列表。

关于kotlin - 我可以指示 Kotlin 关联第一个元素而不是与键提取器匹配的最后一个元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68787241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com