OrderedSet
An ordered, unique collection of objects.
class OrderedSet<T> where T : Hashable
An ordered, unique collection of objects.
class OrderedSet<T> where T : Hashable
import SwiftSoup
protocol Hashable : Equatable
A type that can be hashed into a Hasher
to produce an integer hash value.
init()
Inititalizes an empty ordered set.
required init(arrayLiteral elements: T...)
init<S>(sequence: S) where T == S.Element, S : Sequence
Initializes a new ordered set with the order and contents of sequence. If an object appears more than once in the sequence it will only appear once in the ordered set, at the position of its first occurance.
var last: T? { get }
Returns the last object in the set, or nil
if the set is empty.
func append(_ object: T)
Appends an object to the end of the ordered set.
func append<S>(contentsOf sequence: S) where T == S.Element, S : Sequence
Appends a sequence of objects to the end of the ordered set.
func index(of object: T) -> Index?
Locate the index of an object in the ordered set. It is preferable to use this method over the global find() for performance reasons.
func insert<S>(_ objects: S, at index: Index) where T == S.Element, S : Sequence
Inserts objects at a given index, shifting all objects above it up one. This method will cause a fatal error if you attempt to insert the objects out of bounds. If an object in objects already exists in the OrderedSet it will not be added. Objects that occur twice in the sequence will only be added once.
func insert(_ object: T, at index: Index)
Inserts an object at a given index, shifting all objects above it up one. This method will cause a fatal error if you attempt to insert the object out of bounds. If the object already exists in the OrderedSet, this operation is a no-op.
func intersects<S>(_ other: S) -> Bool where T == S.Element, S : Sequence
Tests if the ordered set contains any objects within a sequence.
func isSubset<S>(of sequence: S) -> Bool where T == S.Element, S : Sequence
Tests if a the ordered set is a subset of another sequence.
func moveObject(_ object: T, toIndex index: Index)
Moves an object to a different index, shifting all objects in between the movement. This method is a no-op if the object doesn’t exist in the set or the index is the same that the object is currently at. This method will cause a fatal error if you attempt to move an object to an index that is out of bounds.
func moveObject(at index: Index, to toIndex: Index)
Moves an object from one index to a different index, shifting all objects in between the movement. This method is a no-op if the index is the same that the object is currently at. This method will cause a fatal error if you attempt to move an object fro man index that is out of bounds or to an index that is out of bounds.
func remove<S>(_ objects: S) where T == S.Element, S : Sequence
Removes the given objects from the ordered set.
func remove(_ object: T)
Removes an object from the ordered set. If the object exists in the ordered set, it will be removed. If it is not the last object in the ordered set, subsequent objects will be shifted down one position.
func removeAllObjects()
Removes all objects in the ordered set.
func removeObject(at index: Index)
Removes an object at a given index. This method will cause a fatal error if you attempt to move an object to an index that is out of bounds.
func swapObject(_ first: T, with second: T)
Swaps two objects contained within the ordered set. Both objects must exist within the set, or the swap will not occur.
typealias Index = Int
protocol Copyable
A type whose values can be implicitly or explicitly copied.
protocol CustomStringConvertible
A type with a customized textual representation.
protocol Equatable
A type that can be compared for value equality.
protocol Escapable
protocol ExpressibleByArrayLiteral
A type that can be initialized using an array literal.
protocol Sequence<Element>
A type that provides sequential, iterated access to its elements.
var count: Int { get }
var description: String { get }
var endIndex: Int { get }
var first: T? { get }
var isEmpty: Bool { get }
var startIndex: Int { get }
subscript(index: Index) -> T { get set }
func index(after i: Int) -> Int
func makeIterator() -> Iterator
typealias Iterator = OrderedSetGenerator<T>
var lazy: LazySequence<Self> { get }
A sequence containing the same elements as this sequence, but on which some operations, such as map
and filter
, are implemented lazily.
var underestimatedCount: Int { get }
A value less than or equal to the number of elements in the sequence, calculated nondestructively.
static func != (lhs: Self, rhs: Self) -> Bool
Returns a Boolean value indicating whether two values are not equal.
func allSatisfy(_ predicate: (Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.
func compactMap<ElementOfResult>(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]
Returns an array containing the non-nil
results of calling the given transformation with each element of this sequence.
func compare<Comparator>(_ lhs: Comparator.Compared, _ rhs: Comparator.Compared) -> ComparisonResult where Comparator : SortComparator, Comparator == Self.Element
If lhs
is ordered before rhs
in the ordering described by the given sequence of SortComparator
s
func contains(_ element: Self.Element) -> Bool
Returns a Boolean value indicating whether the sequence contains the given element.
func contains(where predicate: (Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate.
func count<E>(where predicate: (Self.Element) throws(E) -> Bool) throws(E) -> Int where E : Error
Returns the number of elements in the sequence that satisfy the given predicate.
func drop(while predicate: (Self.Element) throws -> Bool) rethrows -> DropWhileSequence<Self>
Returns a sequence by skipping the initial, consecutive elements that satisfy the given predicate.
func dropFirst(_ k: Int = 1) -> DropFirstSequence<Self>
Returns a sequence containing all but the given number of initial elements.
func dropLast(_ k: Int = 1) -> [Self.Element]
Returns a sequence containing all but the given number of final elements.
func elementsEqual<OtherSequence>(_ other: OtherSequence) -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element
Returns a Boolean value indicating whether this sequence and another sequence contain the same elements in the same order.
func elementsEqual<OtherSequence>(_ other: OtherSequence, by areEquivalent: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence
Returns a Boolean value indicating whether this sequence and another sequence contain equivalent elements in the same order, using the given predicate as the equivalence test.
func enumerated() -> EnumeratedSequence<Self>
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns an array containing, in order, the elements of the sequence that satisfy the given predicate.
func filter(_ predicate: Predicate<Self.Element>) throws -> [Self.Element]
func first(where predicate: (Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the first element of the sequence that satisfies the given predicate.
func flatMap<SegmentOfResult>(_ transform: (Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
func forEach(_ body: (Self.Element) throws -> Void) rethrows
Calls the given closure on each element in the sequence in the same order as a for
-in
loop.
func formatted() -> String
func formatted<S>(_ style: S) -> S.FormatOutput where Self == S.FormatInput, S : FormatStyle
func joined() -> FlattenSequence<Self>
Returns the elements of this sequence of sequences, concatenated.
func joined<Separator>(separator: Separator) -> JoinedSequence<Self> where Separator : Sequence, Separator.Element == Self.Element.Element
Returns the concatenated elements of this sequence of sequences, inserting the given separator between each element.
func joined(separator: String = "") -> String
Returns a new string by concatenating the elements of the sequence, adding the given separator between each element.
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence) -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the less-than operator (<
) to compare elements.
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence, by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the given predicate to compare elements.
func map<T, E>(_ transform: (Self.Element) throws(E) -> T) throws(E) -> [T] where E : Error
Returns an array containing the results of mapping the given closure over the sequence’s elements.
@warn_unqualified_access func max() -> Self.Element?
Returns the maximum element in the sequence.
@warn_unqualified_access func max(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the maximum element in the sequence, using the given predicate as the comparison between elements.
@warn_unqualified_access func min() -> Self.Element?
Returns the minimum element in the sequence.
@warn_unqualified_access func min(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the minimum element in the sequence, using the given predicate as the comparison between elements.
func prefix(_ maxLength: Int) -> PrefixSequence<Self>
Returns a sequence, up to the specified maximum length, containing the initial elements of the sequence.
func prefix(while predicate: (Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns a sequence containing the initial, consecutive elements that satisfy the given predicate.
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Self.Element) throws -> Result) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult: (inout Result, Self.Element) throws -> ()) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reversed() -> [Self.Element]
Returns an array containing the elements of this sequence in reverse order.
func shuffled() -> [Self.Element]
Returns the elements of the sequence, shuffled.
func shuffled<T>(using generator: inout T) -> [Self.Element] where T : RandomNumberGenerator
Returns the elements of the sequence, shuffled using the given generator as a source for randomness.
func sorted() -> [Self.Element]
Returns the elements of the sequence, sorted.
func sorted(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.
func sorted<Comparator>(using comparator: Comparator) -> [Self.Element] where Comparator : SortComparator, Self.Element == Comparator.Compared
Returns the elements of the sequence, sorted using the given comparator to compare elements.
func sorted<S, Comparator>(using comparators: S) -> [Self.Element] where S : Sequence, Comparator : SortComparator, Comparator == S.Element, Self.Element == Comparator.Compared
Returns the elements of the sequence, sorted using the given array of SortComparator
s to compare elements.
func split(maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true, whereSeparator isSeparator: (Self.Element) throws -> Bool) rethrows -> [ArraySlice<Self.Element>]
Returns the longest possible subsequences of the sequence, in order, that don’t contain elements satisfying the given predicate. Elements that are used to split the sequence are not returned as part of any subsequence.
func split(separator: Self.Element, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [ArraySlice<Self.Element>]
Returns the longest possible subsequences of the sequence, in order, around elements equal to the given element.
func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix) -> Bool where PossiblePrefix : Sequence, Self.Element == PossiblePrefix.Element
Returns a Boolean value indicating whether the initial elements of the sequence are the same as the elements in another sequence.
func starts<PossiblePrefix>(with possiblePrefix: PossiblePrefix, by areEquivalent: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool where PossiblePrefix : Sequence
Returns a Boolean value indicating whether the initial elements of the sequence are equivalent to the elements in another sequence, using the given predicate as the equivalence test.
func suffix(_ maxLength: Int) -> [Self.Element]
Returns a subsequence, up to the given maximum length, containing the final elements of the sequence.
func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<Self.Element>) throws -> R) rethrows -> R?
func flatMap<ElementOfResult>(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]