0

追加条件付きのソート文字列のテストに問題があります。

テーブルには、文字列を含む列が含まれています。文字列はアルファベット順にソートできます。ただし、記号「[」で始まる行は、数字で始まる行よりも優先度が低いという追加の条件があります。

まず、アルゴリズムがわかりません。第二に、テスト方法がわかりませんが、主にソートに使用するアルゴリズムを使用する必要があります(ただし、アルゴリズムに誤った実装が含まれている場合、テストでは問題が見つかりません)

4

2 に答える 2

2

難しい部分はすでに完了しています: 比較アルゴリズムを実装します。実際にテストするには、a で始まる文字列と数字で始まる文字列を含むデータ セットを任意の順序で作成し、[並べ替えアルゴリズムを呼び出して、文字列が期待どおりの順序であることを確認します。

List<String> toSort = Arrays.asList(new String[] {"[123", "1234", "[234", "0123"});
Collections.sort(toSort, new YourComparator());
assertEquals(Arrays.asList("0123", "1234", "[123", "[234"), toSort);
于 2013-05-18T09:54:49.933 に答える
1

すべての条件付きルールを実装するカスタム コンパレータを作成し、それが保持されているかどうかを確認します。

MyCustomComparator c = new MyCustomComparator();

for(int i=0; i < tab.size()-1; i++){
    if(!c.compare(tab[i], tab[i+1])){
        throw new Exception("Not sorted");
    }
} 

tabソートされた文字列のコレクションはどこにありますか。

編集:もちろん、これは条件付きルールが矛盾していないことを前提としています。たとえば、次のような状況a < b && b < c && c < aは発生しません。

于 2013-05-18T09:57:43.457 に答える