当前位置: 首页 > 面试题库 >

在Swift数组上设置操作(联合,交集)?

阮选
2023-03-14
问题内容

我是否可以使用任何标准库调用来对两个数组执行集合操作,或者自己实现这种逻辑(在功能上和效率上都尽可能理想)?


问题答案:

是的,Swift Set上课了。

let array1 = ["a", "b", "c"]
let array2 = ["a", "b", "d"]

let set1:Set<String> = Set(array1)
let set2:Set<String> = Set(array2)

Swift 3.0+可以对集合执行以下操作:

firstSet.union(secondSet)// Union of two sets
firstSet.intersection(secondSet)// Intersection of two sets
firstSet.symmetricDifference(secondSet)// exclusiveOr

Swift 2.0可以计算数组参数:

set1.union(array2)       // {"a", "b", "c", "d"} 
set1.intersect(array2)   // {"a", "b"}
set1.subtract(array2)    // {"c"}
set1.exclusiveOr(array2) // {"c", "d"}

Swift 1.2+可以在集合上进行计算:

set1.union(set2)        // {"a", "b", "c", "d"}
set1.intersect(set2)    // {"a", "b"}
set1.subtract(set2)     // {"c"}
set1.exclusiveOr(set2)  // {"c", "d"}

如果使用自定义结构,则需要实现Hashable。

感谢Michael Stern在Swift 2.0更新的评论中。

感谢Amjad Husseini在Hashable信息的评论中。



 类似资料:
  • 问题内容: 如何在Swift中设置自定义UIBarButtonItem的操作? 以下代码将按钮成功放置在导航栏中: 现在,我想在触摸按钮时打电话。到目前为止,我的努力: 和.. 和.. 请注意,它出现在智能感知中,但不起作用。 谢谢你的帮助。 编辑:为后代,以下作品: 问题答案: 从Swift 2.2开始,针对编译时检查的选择器有一种特殊的语法。它使用语法:。 Swift 3及更高版本: 如果不确

  • sinter key1 key2...keyN 返回所有给定key的交集 sinterstore dstkey key1...keyN 同sinter,但是会同时将交集存到dstkey下

  • 问题内容: 如果有两个这样迅速创建的数组: 如何将它们合并到? 问题答案: 您可以使用串联数组,以建立新数组 或使用(或)将一个数组附加到另​​一个数组:

  • 有一些操作符允许你组合两个及以上的 source,它们的行为有所不同,重要的是要知道它们之间的区别。 combineLatest 函数签名如下: Rx.Observable.combineLatest([ source_1, ... source_n]) let source1 = Rx.Observable.interval(100) .map( val => "source1 " + val

  • 我有一个熊猫数据框,如下所示。 我根据按数据帧分组。分组数据框在概念上如下所示。 现在,我正在寻找一个内置API,它将给我最大作业数的。对于上面的示例,-2具有最大计数。 更新:我希望具有最大作业计数,而不是具有最大作业计数的。对于上述示例,如果,则输出为。这能做到吗?

  • 我正试图通过SPI在树莓皮3B和Arduino之间建立沟通。我选择了覆盆子皮做主人,阿尔杜伊诺做奴隶。因此,我为Raspberry编写了一些C代码,用于配置接口并通过MOSI线发送两个字节的数据。我用逻辑分析仪观察信号,它们与预期一样,芯片选择在发送过程开始时下降到零,然后再次上升。 对于Arduino的编程,我正在使用Arduino IDE。由于Arduino SPI.h不支持从模式,我想直接访