2013-05-18 31 views
0

我有一個測試添加條件排序字符串的問題。如何編寫一些附加規則的字符串排序

表包含一個包含一些字符串的列。 字符串可以按字母順序排序。 但還有一些附加條件,以符號「[」開頭的行的優先級低於以數字開頭的行的優先級。

首先,我不知道算法。 其次,我不知道如何測試,但主要方法我應該使用算法,它用於排序(但如果算法包含不正確的執行,所以測試沒有發現問題)

回答

1

Write a custom comparator它實現了所有的條件規則,並檢查是否認爲

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等情況不會發生。

2

困難的部分已完成已經:實施比較算法。實際測試它,只需要創建一些數據集,以任意順序,包含字符串開頭的[和字符串以數字開頭,然後調用你的排序算法,並檢查字符串都在預期的順序:

List<String> toSort = Arrays.asList(new String[] {"[123", "1234", "[234", "0123"}); 
Collections.sort(toSort, new YourComparator()); 
assertEquals(Arrays.asList("0123", "1234", "[123", "[234"), toSort); 
+0

謝謝。但我不知道算法。 –

+0

所以這個問題不是用你在問題中說明的方式測試排序算法,而是在寫它的時候?那你爲什麼不問這個? –

相關問題