简体   繁体   English

sort使用比较器的字符串列表

[英]sort List of string using comparator

I have - 我有 -

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);
}

At Collections.sort(list, cmp); Collections.sort(list, cmp); there is an error - Syntax error on token "(", delete this token . What is wrong in this syntax ? 有一个错误 - Syntax error on token "(", delete this token 。此语法有什么问题?

您需要将代码包装在方法中,而不是直接在类块中。

You can't have code directly in a class, it should be in a method like main : 你不能直接在一个类中使用代码,它应该在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);
    }
}

At class level, only declarations (and initializer) blocks are allowed. 在类级别,只允许声明(和初始化程序)块。 Your first two statements are declarations (they are interpreted as field declarations, even though that is probably not your intention). 您的前两个语句是声明(它们被解释为字段声明,即使这可能不是您的意图)。 The third is not a declaration, so it fails. 第三个不是声明,所以它失败了。

Declarations can be: methods, fields, constructors, inner classes 声明可以是:方法,字段,构造函数,内部类

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM