同じ値を持つ文字列の順序で構造体を並べ替えます

マティアスサレン:

同じ値を持つ別の文字列文字の順序で構造体のコレクションを並べ替えようとしています。

次に例を示します。

package main

import (
    "fmt"
    "sort"
    "strings"
)

type Container struct {
    Initial  string
}

func main() {
    s := "dfah"
    c := []Container{}

    for _, r := range "fadh" {
        c = append(c, Container{Initial: string(r)})
    }

    sort.Slice(c, func(i, j int) bool {
        str := strings.Compare(c[i].Initial, s)

        if str == -1 {
            return true
        } else {
            return false
        }
    })

    fmt.Printf("Result: %s\n", c) // returns 'dafh'
    fmt.Printf("Desired result: %s\n", s) // returns 'dfah'
}

望ましい結果は、並べ替えられたContainer構造体のコレクションであり、「dfah」文字列と同じ順序になります。

https://play.golang.org/p/eDW5-xpCzv

それらは常に同じ文字/文字数を持ち、ソートされていません。これを達成するための正しい方法が何かはわかりません。何か案は?ありがとう!

ポール・ハンキン:

スライスソーティング関数では、と比較c[i].Initialしていsます。それは単に間違っています。その代わりに、がbeforeとafterのどちらにc[i].Initial出現するかを調べますsc[j].Initial

ここにいくつかのサンプルコードがあります、またはそれが遊び場で走っているのを見てください

package main

import (
    "fmt"
    "sort"
    "strings"
)

type Container struct {
    Initial string
}

func main() {
    s := "dfah"
    c := []Container{}

    for _, r := range "fadh" {
        c = append(c, Container{Initial: string(r)})
    }

    sort.Slice(c, func(i, j int) bool {
        return strings.Index(s, c[i].Initial) <= strings.Index(s, c[j].Initial)
    })

    fmt.Printf("Result: %s\n", c)         // returns [{d} {f} {a} {h}]
    fmt.Printf("Desired result: %s\n", s) // returns 'dfah'
}

これはs何度もスキャンする必要があるため、実際には効率が悪いことに注意してくださいこれが実際のコードである場合、の文字からsインデックスへのマップを作成して、strings.Index呼び出しをマップルックアップで置き換えることができるようにします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

最初の2列だけでファイルを並べ替え、列の値が同じ場合に備えて入力順序を維持します

分類Dev

同じキーを持つ2つの子配列を1つの配列の値で並べ替えます

分類Dev

文字列を目的の順序で並べ替えます

分類Dev

構造体の配列を文字列で並べ替える

分類Dev

データフレーム内の値を並べ替えますが、同じ値を持つアイテムの順序をランダム化します

分類Dev

ある列を別の列で並べ替え、同じ順序で行を進めます

分類Dev

JavaのArrayListのは、同じ順序で二つのリストを並べ替えます

分類Dev

多次元配列を2列で1つずつ並べ替える方法-すべて同じ順序で

分類Dev

Pythonは2つの異なるサイズのリストを同じ順序で並べ替えますか?

分類Dev

同じ方法で2つの配列を並べ替えます

分類Dev

Cで降順で構造体の配列を並べ替える方法

分類Dev

特定の列が同じ文字列を取得するように列の順序を並べ替える

分類Dev

golangで降順の構造体を並べ替える

分類Dev

配列を別の配列と同じ順序で並べ替える

分類Dev

配列項目を並べ替え、同じ要素の順序を保持する

分類Dev

R 1つの列を昇順で並べ替え、他のすべての列を降順で並べ替えます(列の順序に基づく)

分類Dev

行を並べ替えて、同じ並べ替え順序でグループ化します

分類Dev

Perlで特定の文字順序で文字列を並べ替える

分類Dev

この文字列を並べ替えて、同じ並べ替えられた文字列を再構築する方法

分類Dev

同じ列の2つの部分文字列で並べ替え、1つだけを逆にします

分類Dev

リストを並べ替えるときは、同じ値のアイテムの相対的な順序を維持します

分類Dev

同じ配列内の1つのオブジェクトと同じ値を持つ配列内のオブジェクトを並べ替えます

分類Dev

配列から同じ値を持つすべての構造体を削除する方法

分類Dev

数値文字列のリストを昇順で並べ替えます

分類Dev

数値文字列のリストを昇順で並べ替えます

分類Dev

オブジェクトの配列を日付で並べ替え、日付が同じ場合は文字列値で並べ替えます

分類Dev

同じ識別番号の行を合計し、カスタム順序で並べ替えます

分類Dev

MATLABの構造体で構成されるセル配列を並べ替えますか?

分類Dev

C-2つの配列を同じ方法で並べ替えます

Related 関連記事

  1. 1

    最初の2列だけでファイルを並べ替え、列の値が同じ場合に備えて入力順序を維持します

  2. 2

    同じキーを持つ2つの子配列を1つの配列の値で並べ替えます

  3. 3

    文字列を目的の順序で並べ替えます

  4. 4

    構造体の配列を文字列で並べ替える

  5. 5

    データフレーム内の値を並べ替えますが、同じ値を持つアイテムの順序をランダム化します

  6. 6

    ある列を別の列で並べ替え、同じ順序で行を進めます

  7. 7

    JavaのArrayListのは、同じ順序で二つのリストを並べ替えます

  8. 8

    多次元配列を2列で1つずつ並べ替える方法-すべて同じ順序で

  9. 9

    Pythonは2つの異なるサイズのリストを同じ順序で並べ替えますか?

  10. 10

    同じ方法で2つの配列を並べ替えます

  11. 11

    Cで降順で構造体の配列を並べ替える方法

  12. 12

    特定の列が同じ文字列を取得するように列の順序を並べ替える

  13. 13

    golangで降順の構造体を並べ替える

  14. 14

    配列を別の配列と同じ順序で並べ替える

  15. 15

    配列項目を並べ替え、同じ要素の順序を保持する

  16. 16

    R 1つの列を昇順で並べ替え、他のすべての列を降順で並べ替えます(列の順序に基づく)

  17. 17

    行を並べ替えて、同じ並べ替え順序でグループ化します

  18. 18

    Perlで特定の文字順序で文字列を並べ替える

  19. 19

    この文字列を並べ替えて、同じ並べ替えられた文字列を再構築する方法

  20. 20

    同じ列の2つの部分文字列で並べ替え、1つだけを逆にします

  21. 21

    リストを並べ替えるときは、同じ値のアイテムの相対的な順序を維持します

  22. 22

    同じ配列内の1つのオブジェクトと同じ値を持つ配列内のオブジェクトを並べ替えます

  23. 23

    配列から同じ値を持つすべての構造体を削除する方法

  24. 24

    数値文字列のリストを昇順で並べ替えます

  25. 25

    数値文字列のリストを昇順で並べ替えます

  26. 26

    オブジェクトの配列を日付で並べ替え、日付が同じ場合は文字列値で並べ替えます

  27. 27

    同じ識別番号の行を合計し、カスタム順序で並べ替えます

  28. 28

    MATLABの構造体で構成されるセル配列を並べ替えますか?

  29. 29

    C-2つの配列を同じ方法で並べ替えます

ホットタグ

アーカイブ