文書   >   Swift   >   Dictionary   >   sorted(by:)


インスタンスメソッド


sorted(by:)


要素間の比較として与えられた述語 (predicate) を使用して並べ替えられたシーケンスの要素を返します。





宣言


func sorted(by areInIncreasingOrder: ((key: Key, value: Value), (key: Key, value: Value)) throws -> Bool) rethrows -> [(key: Key, value: Value)]


パラメータ


areInIncreasingOrder最初の引数を 2 番目の引数の前に並べるべき場合に true を返す述語 (predicate)。それ以外の場合は false


戻り値


シーケンスの要素の並べ替えられた配列。


議論


Comparable プロトコルに準拠しない要素のシーケンスを並べ替える場合は、最初の要素を 2 番目の要素の前に並べるべき場合に true を返す述語 (predicate) をこのメソッドに渡します。結果の配列の要素は、与えられた述語 (predicate) に従って順序付けられます。


次の例では、述語はカスタムの HTTPResponse 型の配列の順序を提供します。述語は、成功する前にエラーを順序付け、そのエラーコードによってエラー応答を並べ替えます。


enum HTTPResponse {
    case ok
    case error(Int)
}

let responses: [HTTPResponse] = [.error(500), .ok, .ok, .error(404), .error(403)]
let sortedResponses = responses.sorted {
    switch ($0, $1) {
    // Order errors by code
    case let (.error(aCode), .error(bCode)):
        return aCode < bCode

    // All successes are equivalent, so none is before any other
    case (.ok, .ok): return false

    // Order errors before successes
    case (.error, .ok): return true
    case (.ok, .error): return false
    }
}
print(sortedResponses)
// Prints "[.error(403), .error(404), .error(500), .ok, .ok]"


また、このメソッドを使用して、Comparable プロトコルに準拠する要素を降順に並べ替えて下さい。シーケンスを降順で並べ替えるには、大なり演算子 (>) を areInIncreasingOrder パラメータとして渡します。


let students: Set = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
let descendingStudents = students.sorted(by: >)
print(descendingStudents)
// Prints "["Peter", "Kweku", "Kofi", "Akosua", "Abena"]"


関連する sort() メソッドを呼び出すことは、このメソッドを呼び出して、小なり演算子 (<) を述語 (predicate) として渡すことと同等です。


print(students.sorted())
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"
print(students.sorted(by: <))
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"


述語 (predicate) は、要素に対して 厳密に弱い順序付け でなければなりません。つまり、任意の要素 a、b、および c について、以下の条件が満たされなければなりません。


並べ替えアルゴリズムは安定しているとは限りません。安定した並べ替えは、areInIncreasingOrder が順序を確立しない要素の相対的な順序を保持します。


複雑さ:O(nlog n)、ここで n はシーケンスの長さです。


以下も見よ





辞書の変換

















トップへ












トップへ












トップへ












トップへ












トップへ
目次
Xcode の新機能

  • 言語:Swift
  • SDK


    Xcode 10.0+

    フレームワーク

    Swift 標準ライブラリ

  • 宣言
  • パラメータ
  • 戻り値
  • 議論
  • 以下も見よ












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)