2011-05-02 32 views
0

我有一个程序计算从txt文件中获取的单词的频率,并将它们存储在ArrayList中。我对使用选择排序非常不熟悉,但它是我被要求使用的排序类型。我已经看过多种选择,但是我的排在某处。在字符串的ArrayList上使用选择排序

这是我的实际排序。

private void sort() { 

    for (int i = 0; i < wordArray.size() - 1; i++) { 
     for (int j = i + 1; j < wordArray.size(); j++) { 
      if (wordArray.get(i).compareTo(wordArray.get(j)) == 1) { 

       Word temp = wordArray.get(i); 
       wordArray.set(i, wordArray.get(j)); 
       wordArray.set(j, temp); 
      } 
     } 
    } 
} 

这是我比较的字符串(我很确定逻辑错误在这里)。

public int compareTo(Word w) { 

    for (int i = 0; i < this.word.length() - 1; i++) { 
     if (i <= w.word.length() - 1) { 
      if (this.word.charAt(i) < w.word.charAt(i)) { 
       return -1; 
      } else if (this.word.charAt(i) > w.word.charAt(i)){ 
       return 1; 
      } 
     } 
    } 
    return -1; 
} 

Word是一个具有字符串变量“word”的类。任何提示将不胜感激:)

+0

这有什么问题呢?即什么是不正确的行为?你有没有尝试在调试器中逐句通过你的代码? – 2011-05-02 00:44:59

+0

上面,增加,一个,先进的,以前,所有,因为,总而言之,和,任何,是,是。这是它现在如何发展的一个例子。该文件中有大约138个独特的单词。 – Alex 2011-05-02 00:48:44

+0

我不认为你想要自己实施。我也相信Word.compareTo可以简单地委托给Word的String.compareTo。 – ditkin 2011-05-02 00:49:35

回答

2

为什么不直接使用此

public int compareTo(Word w) { 
    return this.word.compareTo(w.word); 
} 
+0

实际上,在更改compareTo和我的排序if(wordArray.get(i).compareTo(wordArray.get(j))> = 1)之后它工作:)谢谢! – Alex 2011-05-02 01:02:52