init()
init(minimumCapacity : Int)
init<S>(S)
init<Source>(Source)
Availability
Technology
@frozen struct Set<Element> where Element : Hashable
You use a set instead of an array when you need to test efficiently for membership and you aren’t concerned with the order of the elements in the collection, or when you need to ensure that each element appears only once in a collection. あなたが集合を配列の代わりに使うのは、あなたが帰属について能率的にテストする必要がありそしてあなたがコレクションの要素の順番に関心がない場合、または各要素がただ一度だけコレクション中に現れることをあなたが確実にする必要がある場合です。
You can create a set with any element type that conforms to the Hashable
protocol. By default, most types in the standard library are hashable, including strings, numeric and Boolean types, enumeration cases without associated values, and even sets themselves.
あなたは、Hashable
プロトコルに準拠するあらゆる要素型を使って集合を作成することができます。初期状態で、標準ライブラリの中のほとんどの型はハッシュ化されています、文字列、数のおよびブールの型、関連値なしの列挙ケース節、そして集合それら自身さえも。
Swift makes it as easy to create a new set as to create a new array. Simply assign an array literal to a variable or constant with the Set
type specified.
Swiftは、新しい集合を作成することを新しい配列を作成するのと同じくらい簡単にします。単にある配列リテラルをSet
型指定子を持つ変数または定数に代入してください。
Sets provide a suite of mathematical set operations. For example, you can efficiently test a set for membership of an element or check its intersection with another set: 集合は、数学的な集合演算のひとそろいを提供します。例えば、あなたはある要素の帰属について能率的にテストすること、またはそれの別の集合との交差を調べることができます。
Use the contains(_:)
method to test whether a set contains a specific element.
contains(_:)
メソッドを使って、ある集合が特定の要素を含むかどうかテストしてください。
Use the “equal to” operator (==
) to test whether two sets contain the same elements.
「同等」演算子(==
)を使って、2つの集合が同じ要素らを含むかどうかテストしてください。
Use the is
method to test whether a set contains all the elements of another set or sequence.
is
メソッドを使って、ある集合が別の集合またはシーケンスに属する要素すべてを含むかどうかテストしてください。
Use the is
method to test whether all elements of a set are contained in another set or sequence.
is
メソッドを使って、ある集合のすべての要素が別の集合またはシーケンスの中に含まれるかどうかテストしてください。
Use the is
and is
methods to test whether a set is a subset or superset of, but not equal to, another set.
is
およびis
メソッドを使って、ある集合が別の集合の下位集合または上位集合である、しかし等しくはないものであるかどうかテストしてください。
Use the is
method to test whether a set has any elements in common with another set.
is
メソッドを使って、ある集合が別の集合と共通の何らかの要素を持つかどうかテストしてください。
You can also combine, exclude, or subtract the elements of two sets: あなたはまた、結合、排他、または差引を行えます。
Use the union(_:)
method to create a new set with the elements of a set and another set or sequence.
union(_:)
メソッドを使って、ある集合と別の集合またはシーケンスに属する要素で新しい集合を作成してください。
Use the intersection(_:)
method to create a new set with only the elements common to a set and another set or sequence.
intersection(_:)
メソッドを使って、ある集合と別の集合またはシーケンスに共通の要素だけで新しい集合を作成してください。
Use the symmetric
method to create a new set with the elements that are in either a set or another set or sequence, but not in both.
symmetric
メソッドを使って、ある集合または別の集合かシーケンスのどちらかにある、しかし両方にではない要素で新しい集合を作成してください。
Use the subtracting(_:)
method to create a new set with the elements of a set that are not also in another set or sequence.
subtracting(_:)
メソッドを使って、別の集合またはシーケンスにはないある集合の要素で新しい集合を作成してください。
You can modify a set in place by using these methods’ mutating counterparts: form
, form
, form
, and subtract(_:)
.
あなたはある集合をその場で修正することがこれらのメソッドの変更を行う相当物:form
、form
、form
、そしてsubtract(_:)
を使うことで可能です。
Set operations are not limited to use with other sets. Instead, you can perform set operations with another set, an array, or any other sequence type. 集合演算は、他の集合との使用に制限されません。それどころか、あなたは集合演算を他の集合、配列、またはあらゆる他のシーケンス型とで実行できます。
In addition to the Set
type’s set operations, you can use any nonmutating sequence or collection methods with a set.
Set
型のもつ集合演算に加えて、あなたはあらゆる非可変のシーケンスまたはコレクションメソッドを集合で使うことができます。
You can iterate through a set’s unordered elements with a for
-in
loop.
あなたは、集合の持つ順序付けられない要素を始めから終わりまで反復することがfor
-in
で可能です。
Many sequence and collection operations return an array or a type-erasing collection wrapper instead of a set. To restore efficient set operations, create a new set from the result. 多くのシーケンスおよびコレクション演算は、集合ではなく、ある配列またはある型消去コレクションラッパーを返します。能率的な集合演算を取り戻すには、新しい集合を結果から作成してください。
You can bridge between Set
and NSSet
using the as
operator. For bridging to be possible, the Element
type of a set must be a class, an @objc
protocol (a protocol imported from Objective-C or marked with the @objc
attribute), or a type that bridges to a Foundation type.
あなたはSet
とNSSet
の間をas
演算子を使ってブリッジできます。ブリッジが可能にされるには、集合のElement
型は、クラス、@objc
プロトコル(Objective-Cからインポートされるまたは@objc
属性で印されるプロトコル)、またはあるFoundation型にブリッジする型でなければなりません。
Bridging from Set
to NSSet
always takes O(1) time and space. When the set’s Element
type is neither a class nor an @objc
protocol, any required bridging of elements occurs at the first access of each element, so the first operation that uses the contents of the set (for example, a membership test) can take O(n).
Set
からNSSet
へのブリッジは、常にO(1)の時間と空間をとります。集合の持つElement
型がクラスでも@objc
プロトコルでもない場合、要素のブリッジに必要なあらゆることが要素それぞれの最初のアクセスで起こります、それで集合の内容を使う最初の演算(例えば、帰属テスト)は、O(n)をとります。
Bridging from NSSet
to Set
first calls the copy(with:)
method (- copy
in Objective-C) on the set to get an immutable copy and then performs additional Swift bookkeeping work that takes O(1) time. For instances of NSSet
that are already immutable, copy(with:)
returns the same set in constant time; otherwise, the copying performance is unspecified. The instances of NSSet
and Set
share buffer using the same copy-on-write optimization that is used when two instances of Set
share buffer.
NSSet
からSet
へのブリッジは、最初にcopy(with:)
メソッド(Objective-Cにおける- copy
)を集合上で呼び出すことで可変のコピーを取得して、それからO(1)時間をとる追加的なSwift簿記作業を実行します。元から不変であるNSSet
のインスタンスに対しては、copy(with:)
は同じ集合を定数時間で返します;そうでなければ、コピーすることの性能は不定です。NSSet
とSet
のインスタンスは、Set
の2つのインスタンスがバッファを共有するとき使われるのと、同じコピーオンライト最適化を使ってバッファを共有します。
init()
init(minimumCapacity : Int)
init<S>(S)
init<Source>(Source)
var isEmpty : Bool
var count: Int
var capacity: Int
func contains(Element) -> Bool
func insert(Element) -> (inserted: Bool, memberAfterInsert : Element)
func insert<ConcreteElement>(ConcreteElement) -> ( inserted: Bool, memberAfterInsert : ConcreteElement)
Element
is AnyHashable
.
Element
がAnyHashable
である時に利用可能です。
func update(with: Element) -> Element?
func update<ConcreteElement>( with: ConcreteElement) -> ConcreteElement?
Element
is AnyHashable
.
Element
がAnyHashable
である時に利用可能です。
func reserveCapacity (Int)
func filter((Element) -> Bool) -> Set<Element>
func remove(Element) -> Element?
func remove<ConcreteElement>(ConcreteElement) -> ConcreteElement?
Element
is AnyHashable
.
Element
がAnyHashable
である時に利用可能です。
func removeFirst () -> Element
func remove(at: Set<Element>.Index) -> Element
func removeAll (keepingCapacity : Bool)
func union<S>(S) -> Set<Element>
func formUnion <S>(S)
func intersection(Set<Element>) -> Set<Element>
func intersection<S>(S) -> Set<Element>
func formIntersection <S>(S)
func symmetricDifference <S>(S) -> Set<Element>
func formSymmetricDifference (Set<Element>)
func formSymmetricDifference <S>(S)
func subtract(Set<Element>)
func subtract<S>(S)
func subtracting(Set<Element>) -> Set<Element>
func subtracting<S>(S) -> Set<Element>
static func == (Set<Element>, Set<Element>) -> Bool
static func != (Set<Element>, Set<Element>) -> Bool
func isSubset (of: Set<Element>) -> Bool
func isSubset <S>(of: S) -> Bool
func isStrictSubset (of: Set<Element>) -> Bool
func isStrictSubset <S>(of: S) -> Bool
func isSuperset (of: Set<Element>) -> Bool
func isSuperset <S>(of: S) -> Bool
func isStrictSuperset (of: Set<Element>) -> Bool
func isStrictSuperset <S>(of: S) -> Bool
func isDisjoint (with: Set<Element>) -> Bool
func isDisjoint <S>(with: S) -> Bool
var first: Element?
func randomElement () -> Element?
func randomElement <T>(using: inout T) -> Element?
subscript(Set<Element>.Index) -> Element
func contains(where: (Element) -> Bool) -> Bool
func allSatisfy ((Element) -> Bool) -> Bool
func first(where: (Element) -> Bool) -> Element?
func firstIndex (of: Element) -> Set<Element>.Index?
nil
if the element is not a member of the set.
与えられた要素の集合の中のインデックス、またはその要素が集合のメンバでないならばnil
を返します。
func firstIndex (where: (Element) -> Bool) -> Index?
func index(of: Element) -> Index?
func min() -> Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func min(by: (Element, Element) -> Bool) -> Element?
func max() -> Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func max(by: (Element, Element) -> Bool) -> Element?
func map<T>((Element) -> T) -> [T]
func compactMap <ElementOfResult>((Element) -> ElementOfResult?) -> [ElementOfResult]
nil
results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果で非-nil
のものを含んでいる配列を返します。
func flatMap <SegmentOfResult>((Element) -> SegmentOfResult) -> [SegmentOfResult.Element]
func reduce<Result>(Result, (Result, Element) -> Result) -> Result
func reduce<Result>(into: Result, (inout Result, Element) -> ()) -> Result
func sorted() -> [Element]
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func sorted(by: (Element, Element) -> Bool) -> [Element]
func shuffled() -> [Element]
func shuffled<T>(using: inout T) -> [Element]
var lazy: LazySequence<Set<Element>>
map
and filter
, are implemented lazily.
このシーケンスと同じ要素を含んでいるシーケンス、しかしそれの上で何らかの演算、例えばmap
やfilter
が遅延に実装されます。
func enumerated() -> EnumeratedSequence<Set<Element>>
func forEach ((Element) -> Void)
for
-in
loop.
指定されたクロージャをそのシーケンスの各要素上でfor
-in
ループと同じ順番で呼び出します。
func makeIterator () -> Set<Element>.Iterator
var underestimatedCount : Int
Set
.
すべてのコレクションに共通の順序依存演算を、Set
に対して実装されたように実行します。
func encode(to: Encoder)
Element
conforms to Encodable
.
Element
がEncodable
に準拠する時に利用可能です。
init(from: Decoder)
Element
conforms to Decodable
.
Element
がDecodable
に準拠する時に利用可能です。
func hash(into: inout Hasher)
var description: String
var debugDescription : String
var customMirror : Mirror
class NSSet
struct Set.Index
struct Set.Iterator
Set<Element>
.
Set<Element>
のメンバーすべてを対象とするイテレータ。
init(arrayLiteral : Element...)
func withContiguousStorageIfAvailable <R>((UnsafeBufferPointer<Element>) -> R) -> R?
typealias Set.ArrayLiteralElement
typealias Set.Indices
typealias Set.SubSequence
var hashValue : Int
CVarArg
Collection
CustomDebugStringConvertible
CustomReflectable
CustomStringConvertible
Decodable
Element
conforms to Decodable
.
Element
がDecodable
に準拠している時に準拠します。
Encodable
Element
conforms to Encodable
.
Element
がEncodable
に準拠する時に準拠します。
Equatable
ExpressibleByArrayLiteral
Hashable
Sequence
SetAlgebra
struct Array
struct Dictionary