首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果两个数组包含相同的元素,不管这些元素的出现顺序如何,我如何在Swift中签入这些元素?

如果两个数组包含相同的元素,不管这些元素的出现顺序如何,我如何在Swift中签入这些元素?
EN

Stack Overflow用户
提问于 2016-04-19 17:40:16
回答 7查看 59.6K关注 0票数 57

假设有两个数组。

代码语言:javascript
复制
var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a"]

我希望这两个数组的比较结果是真的,并且如下所示…

代码语言:javascript
复制
var array1 = ["a", "b", "c"]
var array2 = ["b", "c", "a", "d"]

...to为false。我如何在Swift中实现这一点?我试图将两个数组都转换为Set,但由于某种原因,Set()一直在删除数组中包含的一些(通常是重复的)对象。

任何帮助都将不胜感激。

EN

回答 7

Stack Overflow用户

发布于 2016-04-19 17:48:23

你可以这样做:

代码语言:javascript
复制
  array1.sortInPlace()
  array2.sortInPlace()

  print(array1,array2)

  if array1 == array2 {
    print("equal")
  } else {
  print("not equal") 
  }

如果不想更改原始数组,我们可以这样做

代码语言:javascript
复制
 let sorted1 = array1.sort()
 let sorted2 = array2.sort()

  if sorted1 == sorted2 {
    print("equal")
  }else {
    print("not equal")
  }
票数 8
EN

Stack Overflow用户

发布于 2019-08-08 00:57:23

使用Set

代码语言:javascript
复制
let array1 = ["a", "b", "c"]
let array2 = ["b", "c", "a", "c"]

let set1 = Set(array1)
let set2 = Set(array2)

if (set1.count == set2.count && set1 == set2) { //if you compare big sets it is recommended to compare the count of items in the sets beforehand
    //they are identical
}

Set实现了Hashable,因此任务是实现散列函数以使用Set

票数 8
EN

Stack Overflow用户

发布于 2016-04-19 17:52:47

创建函数来比较它们:

代码语言:javascript
复制
func containSameElements(var firstArray firstArray: [String], var secondArray: [String]) -> Bool {
    if firstArray.count != secondArray.count {
        return false
    } else {
        firstArray.sortInPlace()
        secondArray.sortInPlace()
        return firstArray == secondArray
    }
}

然后:

代码语言:javascript
复制
var array1 = ["a", "a", "b"]
var array2 = ["a", "b", "a"]

var array3 = ["a", "b", "c"]
var array4 = ["b", "c", "a", "d"]

print(containSameElements(firstArray: array1, secondArray: array2)) //true
print(containSameElements(firstArray: array3, secondArray: array4)) //false
print(array1) //["a", "a", "b"]
print(array2) //["a", "b", "a"]
print(array3) //["a", "b", "c"]
print(array4) //["b", "c", "a", "d"]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36714522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档