如何判断Kotlin中两个数组是否具有相同的信息但顺序不同
假设我有一些数组:如何判断Kotlin中两个数组是否具有相同的信息但顺序不同,kotlin,Kotlin,假设我有一些数组: val a = arrayOf("Pushups", "Benchpress", "Squats") val b = arrayOf("Pushups", "Squats", "Benchpress") val c = arrayOf("Pushups", "Squats", "Sit Ups") 我主要想创建一个函数,以查看两个数组是否具有相同的信息,即使它们的顺序不同: checkSameInfo(a,b) //Should return true checkSameI
val a = arrayOf("Pushups", "Benchpress", "Squats")
val b = arrayOf("Pushups", "Squats", "Benchpress")
val c = arrayOf("Pushups", "Squats", "Sit Ups")
我主要想创建一个函数,以查看两个数组是否具有相同的信息,即使它们的顺序不同:
checkSameInfo(a,b) //Should return true
checkSameInfo(a,c) //Should return false
除了使用大量for循环之外,还有其他方法可以做到这一点吗
在学习kotlin的最后两个月里,StackOverflow提供了极大的帮助,因此感谢所有回复的人:)
希望这有帮助 我只是将它们转换为集合,然后检查内容是否相等。像这样:
fun <T> checkSameInfo(arr1: Array<T>, arr2: Array<T>) = arr1.toSet() == arr2.toSet()
谢谢,这正是我需要的!它将它们按字母顺序排列,我相信这比转换成一个集合并检查是否相等效果要差。排序是
O(n*logn)
,而转换为集合则是O(n)
。
fun <T> checkSameInfo(arr1: Array<T>, arr2: Array<T>) = arr1.toSet() == arr2.toSet()
fun <T> checkSameInfo(list1: List<T>, list2: List<T>) =
list1.containsAll(list2) && list2.containsAll(list1)