【问题标题】:sort List of string using comparator使用比较器排序字符串列表
【发布时间】:2012-08-22 00:01:58
【问题描述】:

我有 -

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。这个语法有什么问题?

【问题讨论】:

    标签: java list sorting comparator


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你不能在一个类中直接有代码,它应该在像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);
          }
      }
      

      【讨论】:

      • 当 main 是一个内部函数时,如何通过 eclispe 这个类运行?
      • @URL87 只需使用run... 向导
      • 当源数组包含非数值时会崩溃
      【解决方案3】:

      在类级别,只允许声明(和初始化程序)块。您的前两个语句是声明(它们被解释为字段声明,即使这可能不是您的意图)。第三个不是声明,所以它失败了。

      声明可以是:方法、字段、构造函数、内部类

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-05
          • 2021-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-03
          • 2011-05-12
          • 1970-01-01
          相关资源
          最近更新 更多