수색…


선언 세트

집합은 고유 한 값의 정렬되지 않은 모음입니다. 고유 값은 동일한 유형이어야합니다.

var colors = Set<String>()

배열 리터럴 구문을 사용하여 값이있는 집합을 선언 할 수 있습니다.

var favoriteColors: Set<String> = ["Red", "Blue", "Green", "Blue"]
// {"Blue", "Green", "Red"}

세트의 값 수정하기

var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}  

insert(_:) 메서드를 사용하여 새 항목을 집합에 추가 할 수 있습니다.

favoriteColors.insert("Orange")
//favoriteColors = {"Red", "Green", "Orange", "Blue"}

remove(_:) 메소드를 사용하여 세트에서 항목을 제거 할 수 있습니다. 그것은 제거 된 값을 포함하는 선택적 값을 반환하거나 값이 집합에 없으면 nil을 반환합니다.

let removedColor = favoriteColors.remove("Red")
//favoriteColors = {"Green", "Orange", "Blue"}
// removedColor = Optional("Red")

let anotherRemovedColor = favoriteColors.remove("Black")
// anotherRemovedColor = nil

집합에 값이 들어 있는지 확인하기

var favoriteColors: Set = ["Red", "Blue", "Green"]
//favoriteColors = {"Blue", "Green", "Red"}

contains(_:) 메소드를 사용하여 세트에 값이 들어 있는지 확인할 수 있습니다. 집합에 해당 값이 포함되어 있으면 true를 반환합니다.

if favoriteColors.contains("Blue") {
    print("Who doesn't like blue!")
}
// Prints "Who doesn't like blue!"

세트에서 작업 수행

두 세트의 공통 값 :

intersect(_:) 메소드를 사용하여 두 세트에 공통 인 모든 값을 포함하는 새 세트를 작성할 수 있습니다.

let favoriteColors: Set = ["Red", "Blue", "Green"]
let newColors: Set = ["Purple", "Orange", "Green"]

let intersect = favoriteColors.intersect(newColors) // a AND b
// intersect = {"Green"}

각 집합의 모든 값 :

union(_:) 메소드를 사용하여 각 세트의 모든 고유 값을 포함하는 새 세트를 작성할 수 있습니다.

let union = favoriteColors.union(newColors) // a OR b
// union = {"Red", "Purple", "Green", "Orange", "Blue"}

"녹색"값이 새 세트에 한 번만 나타나는 방식에 유의하십시오.

두 세트에 존재하지 않는 값 :

exclusiveOr(_:) 메소드를 사용하여 두 세트 중 하나의 세트 만 고유 값을 포함하는 새 세트를 작성할 수 있습니다.

let exclusiveOr = favoriteColors.exclusiveOr(newColors) // a XOR b
// exclusiveOr = {"Red", "Purple", "Orange", "Blue"}

"녹색"값이 새 세트에 표시되지 않는 이유는 두 세트에 모두 있었기 때문입니다.

집합에 포함되지 않은 값 :

subtract(_:) 메소드를 사용하여 특정 세트에없는 값을 포함하는 새 세트를 작성할 수 있습니다.

let subtract = favoriteColors.subtract(newColors) // a - (a AND b)
// subtract = {"Blue", "Red"}

"녹색"값이 두 번째 세트에도 있었으므로 새 세트에 값이 표시되지 않는지 확인하십시오.

내 자신의 유형 값을 집합에 추가하기

자신의 타입의 Set 를 정의하기 위해서는 타입을 Hashable 일치시킬 필요가 있습니다.

struct Starship: Hashable {
    let name: String
    var hashValue: Int { return name.hashValue }
}

func ==(left:Starship, right: Starship) -> Bool {
    return left.name == right.name
}

이제 Starship(s) Set Starship(s) Set of Starship(s) 만들 수 있습니다.

let ships : Set<Starship> = [Starship(name:"Enterprise D"), Starship(name:"Voyager"), Starship(name:"Defiant") ]

CountedSet

3.0

Swift 3은 CountedSet 클래스를 소개합니다 ( NSCountedSet Objective-C 클래스의 Swift 버전).

CountedSet은 이름에서 알 수 있듯이 값의 수를 추적합니다.

let countedSet = CountedSet()
countedSet.add(1)
countedSet.add(1)
countedSet.add(1)
countedSet.add(2)

countedSet.count(for: 1) // 3
countedSet.count(for: 2) // 1


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow