2013-04-07 46 views
1

這裏是由第二個字符排序字的排序方法,它是dosnt工作( 任何人都可以說,如何解決它如何解決這種排序方法?

out = new StringTokenizer(input.toString()); 
n = out.countTokens(); 
List<String> wordList = new ArrayList<String>(n); 
for (int i = 0; i < n; i++) { 
    wordList.add(out.nextToken()); 
} 
Collections.sort(wordList, new Comparator<String>() { 
    public int compare(String o1, String o2) { 
    return compare(o1.substring(1, 2).compareTo(o2.substring(1, 2))); 
    } 
}); 
+4

什麼是不適用的輸入示例? – 2013-04-07 13:52:24

+1

你應該接受你最後一個問題的答案。 – Keppil 2013-04-07 13:53:02

+1

等級= 3他/她等到明天接受回答 – Aubin 2013-04-07 13:55:12

回答

0

嘗試使用這樣的:?

Collections.sort(wordList, new Comparator<String>() { 
public int compare(String o1, String o2) { 
return o1.substring(1, 2).compareTo(o2.substring(1, 2)); 
} 

取而代之的是:

Collections.sort(wordList, new Comparator<String>() { 
    public int compare(String o1, String o2) { 
    return compare(o1.substring(1, 2).compareTo(o2.substring(1, 2))); 
    } 

原因是前者的工作原理是Comparator類的compare函數從Collection中取對象,並且期望o在第一個參數爲「較大」時爲1,在第二個參數爲「較大」時爲-1。所以,在這個函數中,你抽象地定義了什麼使得一個對象比另一個更大/更小/更小。

乾杯。

+0

我認爲如果你預先解釋發生了什麼,對未來的訪問者是否會非常有幫助。 – 2013-04-07 14:15:31

+0

@SeanConnolly ok。我將在明天編輯細節。 – 2013-04-07 14:29:59