Xcode 9.4.1-如何跳过集合的其余部分并移至下一个集合

时间:2018-12-07 17:22:50

标签: swift for-loop set

虽然这可能不是一个很好的例子,但是正如问题所指出的,我希望将randomNonumberSets中的集合进行比较。但是,找到一个号码后,我想知道是否有一种方法可以跳到下一个号码。

总结randomNo包含2个可以在同一集合中找到的数字,分别是“ 6”和“ 9”。我想知道在我找到“ 6”的那一刻是否可以使该集合的其余部分无效,并移至下一个集合,而无需循环浏览集合中的其余数字

init() {
    let numberSet1 : Set<Int> = [1,2,3,4,5]
    let numberSet2 : Set<Int> = [6,7,8,9,10]
    let numberSet3 : Set<Int> = [11,12,13,14,15]

    let randomNo = [3,6,9,11]

    numberSets = [numberSet1,numberSet2,numberSet3]
}

func searchFor(){
    for num in randomNo{
        for set in numberSets{
            if set.contains(num) {
                print("The following number was found: ", num)
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

一种方法是continue外循环:

outer: for num in randomNo{
    for set in numberSets{
        if set.contains(num) {
            print("The following number was found: ", num)
            continue outer
        }
    }
}

另一种方法是将所有三个集合合并:

let union = numberSet1.union(numberSet2).union(numberSet3)

print(randomNo.filter(union.contains))

答案 1 :(得分:0)

首先,我认为值得一提的是,在您的示例中,代码不是在集合中循环,而不是在集合(php-fpmrandomNo)数组中循环。

如果我正确地解决了该问题,则无需优化查找集合中的元素。询问集合是否包含元素(查找)不是一项昂贵的操作,并且复杂度为numberSets

如果要在找到第一个数字后停止遍历O(1),只需使用numberSets控制流语句即可:

break

希望有帮助。