任意排序对象列表的相等性 kotlin

Equality of lists of arbitrarily ordered objects kotlin

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

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

您可以使用分组折叠操作将每个列表有效地转换为项目的地图。

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