我有 -
import java.util.*;
public class TestCompare {
List<String> list = Arrays.asList("10", "1", "20", "11", "21", "12");
Comparator<String> cmp = new Comparator<String>() {
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
};
Collections.sort(list, cmp);
}
在Collections.sort(list, cmp);
,有一个错误 - Syntax error on token "(", delete this token
。这种语法有什么问题?
答案 0 :(得分:9)
您需要将代码包装在方法中,而不是直接包含在类块中。
答案 1 :(得分:7)
你不能直接在一个类中使用代码,它应该在main
之类的方法中:
public class TestCompare {
public static void main() {
List<String> list = Arrays.asList("10", "1", "20", "11", "21", "12");
Comparator<String> cmp = new Comparator<String>() {
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
};
Collections.sort(list, cmp);
}
}
答案 2 :(得分:0)
在类级别,只允许声明(和初始化程序)块。您的前两个语句是声明(它们被解释为字段声明,即使这可能不是您的意图)。第三个不是声明,所以它失败了。
声明可以是:方法,字段,构造函数,内部类
答案 3 :(得分:0)
1.8版以后,您也可以使用lambda表达式。
public class TestCompare {
public static void main() {
List<String> list = Arrays.asList("10", "1", "20", "11", "21", "12");
Comparator<String> cmp = (o1, o2) -> {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
};
Collections.sort(list, cmp);
}
}