Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字母顺序比较字符的数组列表_Java - Fatal编程技术网

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
重新生成
字符串
实例并比较字符串,但如果这是一个赋值,您可能会因此而大吃一惊:)