Java 按字母顺序比较字符的数组列表
我有自己的课程Java 按字母顺序比较字符的数组列表,java,Java,我有自己的课程word和symbolSymbol是字符的包装器Word是一个ArrayList。 我需要根据一些符号出现的次数对数组列表进行排序,或者如果出现的次数相同,则按字母顺序进行排序。 怎么做?我想我需要重写类Word的compare方法,然后使用Collections.sort。 但我不知道如何按字母顺序比较两个单词 这是symbol类的一部分 public class Symbol implements Comparable<Symbol> { private c
word
和symbol
Symbol
是字符的包装器Word
是一个ArrayList
。
我需要根据一些符号出现的次数对数组列表进行排序,或者如果出现的次数相同,则按字母顺序进行排序。
怎么做?我想我需要重写类Word
的compare方法,然后使用Collections.sort
。
但我不知道如何按字母顺序比较两个单词
这是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()));
}
}
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;
}
}
如何按字母顺序比较两个数组列表
if (word.contains(comparable_symbol)){
// Add to a new list
}
if (newList.size() > 1){
// Sort your list alphabetically
}
您还必须实现并覆盖compareTo(Word o)以使Word.contains(可比较的\u符号)正常工作。只需从左到右比较每个字符的值即可?如果一个单词比前一个单词短,则如果前面的所有字符都匹配,则在前一个单词。当然,这将使用Unicode 16位代码点作为字母表,除非您进行其他更改……一个非常糟糕的技巧是使用StringBuilder
重新生成字符串
实例并比较字符串,但如果这是一个赋值,您可能会因此而大吃一惊:)