gpt4 book ai didi

list - 使用自定义相等函数在 Kotlin 中减去两个列表

转载 作者:行者123 更新时间:2023-12-02 09:09:16 25 4
gpt4 key购买 nike

我有两个列表,我想获取只包含第一个列表中不在第二个列表中的元素的列表。问题是我需要在减法时指定一个自定义的 equal。假设我想使用列表条目中的字段之一。假设 id

我是这样实现的:

list1.filter { log -> list2.none { it.id == log.id } }

或者
val projection = logEntries.map { it.id }
list1.filter { it.id !in projection }

有没有更好的方法来做到这一点?请考虑到我无法为该类设置新的 equal 方法。

最佳答案

你这样做的方式没问题,但是当列表变大时,你可能想要这样做:

您可以先将引用列表 ( list2 ) 转换为一组,从而提高流程效率。

val referenceIds = list2.distinctBy { it.id }.toSet()

list1.filter { it.id !in referenceIds }

背景:

当您检查是否包含元素时,您最有可能使用的 ArrayList 的时间复杂度为 O(n)。因此,如果列表变大,则需要更长的时间。

另一方面,在检查是否包含元素时, HashSet 的时间复杂度为 O(1)。所以,如果 list2 变大,它不会变慢。

关于list - 使用自定义相等函数在 Kotlin 中减去两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513010/

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