java - 通过两个过滤器对字符串数组进行排序

标签 java sorting

我有以下字符串数组: “0 11”、“22 34”、“5 14”、“22 13”... 如何对它进行排序以使两个数字都按升序排列: “0 11”、“5 14”、“22 13”、“22 34”?

最佳答案

您只需要实现一个适当的比较器。像这样:

public static void main(String[] args) {
    String [] ar = {"0 11", "22 34", "5 14", "22 13"};

    Arrays.sort(ar, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            String [] value1 = o1.split(" ");
            String [] value2 = o2.split(" ");
            Integer o1First = Integer.valueOf(value1[0]);
            Integer o1Second = Integer.valueOf(value1[1]);
            Integer o2First = Integer.valueOf(value2[0]);
            Integer o2Second = Integer.valueOf(value2[1]);
            if (!o1First.equals(o2First))
                return o1First.compareTo(o2First);
            return o1Second.compareTo(o2Second);

        }
    });

    System.out.println(Arrays.toString(ar));
}

关于java - 通过两个过滤器对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828969/

相关文章:

java - Spring Boot 2.0.0 & 同一个应用不同域的静态资源

java - 如何在java中使用AT指令控制手机

java - 过度使用 If else 语句

java - 通过 Jsoup post 方法登录网站不起作用

JavaScript:搜索特定值的对象数组

c++ - 比较两个数组之和的快速算法?

java - Android 中的 JSON 对象

Ruby:连接和排序文件名

java - java对不同类的对象进行排序

java - 尝试从 ArrayList 访问数组