0
我有我自己的类word
和symbol
。 Symbol
是char的一些包装。 Word
是ArrayList<Symbol>
。 我需要根据symbol
的出现次数或发生次数相同 - 按字母顺序排序ArrayList<Word>
。 如何做到这一点?我想我需要覆盖类的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;
}
}
如何按字母顺序比较两个的ArrayList?
只需比较每个字符值从左到右?如果一个单词比之前的所有字符匹配时先于另一个单词先行。当然,这将使用Unicode 16位代码点作为字母表,除非您进行其他更改... – 2013-05-07 22:17:48
一个非常糟糕的窍门是使用StringBuilder重新生成一个String实例并比较这些字符串,但如果这是你可能会得到一个指定的作业:) – 2013-05-07 22:20:00
哦!我懂了。谢谢! – lapots 2013-05-07 22:26:36