首页 > 解决方案 > 任意排序对象列表的相等性kotlin

问题描述

当对象不容易排序时(例如,它们是许多不同类型中的每一个),检查顺序无关但重复很重要的两个对象列表是否相等的正确方法是什么?

显然,通过从每个中删除相等的对直到没有匹配是可行的,但这似乎效率低下。有没有更好的办法?

标签: listkotlinequality

解决方案


您可以使用 group-and-fold 操作将每个列表按其计数有效地转换为项目映射。

fun equalIgnoreOrder(a: List<*>, b: List<*>): Boolean {
    return a.groupingBy { it }.eachCount() == b.groupingBy { it }.eachCount()
}

推荐阅读