0

我有自己的班级wordsymbol. Symbol是 char 的一些包装器。Word是一个 ArrayList<Symbol>。我需要ArrayList<Word>按一些出现的次数symbol或出现次数是否相同 - 按字母顺序排序。怎么做?我想我需要覆盖compareto类的方法,Word然后使用Collections.sort. 但我不知道如何words按字母顺序比较两个(两个数组列表)。

这是symbol课堂的一部分

public class Symbol implements Comparable<Symbol> {
    private char symbol;
    ....

    @Override
    public int compareTo(Symbol o) {
        return Character.valueOf(symbol).compareTo(Character.valueOf(o.getSymbol()));
    }
}

这是word课堂的一部分

public class Word implements Comparable<Word> {

    private ArrayList<Symbol> word;
    private Symbol comparable_symbol;

    public int count(){ //number of occurrences
        int count = 0;
        for(Symbol s:word){
            if (s == comparable_symbol) count++;
        }
        return count;
    }

    @Override
    public int compareTo(Word o) {
        int left = this.count();
        int right = o.count();
        if (left == right){
            //compare alphabetically
        }
        else return (left > right)?1:-1;
    }

}

如何按字母顺序比较两个数组列表?

4

1 回答 1

0
if (word.contains(comparable_symbol)){
    // Add to a new list
}
if (newList.size() > 1){
    // Sort your list alphabetically
}

您还必须实现并覆盖 compareTo(Word o) 以使 word.contains(comparable_symbol) 正常工作。

于 2013-05-07T22:33:24.433 回答