Kotlin如何判断两个列表是否包含相同的独立元素?
Kotlin 无序列表内容一致性判断的一行实现
根据你的列表是否存在重复元素,可选两种写法,均天然兼容单端空、双端空的边界场景:
场景1:列表无重复元素
直接转Set对比即可,代码最简单:
list1.toSet() == list2.toSet()
场景2:列表存在重复元素
如果需要区分元素出现次数,用分组计数对比即可覆盖所有情况:
list1.groupingBy { it }.eachCount() == list2.groupingBy { it }.eachCount()
补充说明
你原本的长度校验加containsAll的逻辑也可以直接合并为一行:
list1.size == list2.size && list1.containsAll(list2)
但该写法和转Set的方案有相同的局限性:如果列表存在重复元素会出现误判(比如["a","a","b"]和["a","b","b"]会被判定为相等),仅适合无重复元素的场景使用。
内容的提问来源于stack exchange,提问作者luckysing_noobster
相关产品推荐
相关产品推荐

