List<String> listOfWords = new ArrayList<String>();
Collections.sort(listOfWords, new Comparator<String>()) {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
现在我有一个单词列表,我想按升序排序。但是,当我运行上面的代码时,我得到语法错误(例如,编译器说我缺少括号和括号。但是当我注释掉以下内容时:
Collections.sort(listOfWords, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
一切都运行良好。我实施排序错了吗?
答案 0 :(得分:1)
你的编译器告诉你什么是错的。你在错误的地方有括号。
您可能还没有意识到您创建的Comparator
是anonymous class?这些声明为:new Comparator<String>() { ... }
因此,您在花括号{ ... }
中作为语句块处理的位在内部方法调用的方法参数部分中。
您发布的代码:
Collections.sort(listOfWords, new Comparator<String>()) {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
更正的代码:
Collections.sort(listOfWords, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
如果变化不明显:
- Collections.sort(listOfWords, new Comparator()) { + Collections.sort(listOfWords, new Comparator() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } - } + });