list - 任意排序对象列表的相等性kotlin
问题描述
当对象不容易排序时(例如,它们是许多不同类型中的每一个),检查顺序无关但重复很重要的两个对象列表是否相等的正确方法是什么?
显然,通过从每个中删除相等的对直到没有匹配是可行的,但这似乎效率低下。有没有更好的办法?
解决方案
您可以使用 group-and-fold 操作将每个列表按其计数有效地转换为项目映射。
fun equalIgnoreOrder(a: List<*>, b: List<*>): Boolean {
return a.groupingBy { it }.eachCount() == b.groupingBy { it }.eachCount()
}
推荐阅读
- f# - List.rev - 此值不是函数,不能应用
- java - 在 java 项目中放置方法(非 get 和 set)的位置以符合 Spring MVC
- c# - RelayCommand 单元测试
- python-3.x - scipy.convolve 使用 3D 数组和 3D 内核给出“ValueError:object too deep for desired array”
- c - 尝试在 C 中打印一系列斐波那契数
- javascript - 如何用 JSON 数据替换 HTML 文本
- docker - Gitlab注册表:拒绝访问
- c++ - GCC 版本与基本字符串
- amazon-web-services - AWS API Gateway 能否自动添加相关(请求)ID
- xslt - 在 xsl:fo 表中按列行值分组