有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java按数值排序字符串数组

我有一个字符串数组。这个数组由三个整数数组组成。但每个整数后面都跟一个字符。不是l就是p就是r。 现在我的目标是根据int值对字符串数组进行排序。数组排序或Collection.sort无法正常工作。在我的例子中,如果数组是 {2l 1r 0p 4p 3l}答案应该是{2l 0p 1r 3l 4p}

  String[] left = new String[starts.length];
            String[] right = new String[ends.length];
            String[] points_fast = new String[points.length];

            for (int i = 0; i < starts.length; i++) {
                left[i] = (starts[i] + "l" + " ");
            }
            for (int i = 0; i < ends.length; i++) {
                right[i] = (ends[i] + "r" + " ");
            }
            for (int i = 0; i < points.length; i++) {
                points_fast[i] = (points[i] + "p" + " ");
            }
            String[] add = new String[left.length + right.length + points_fast.length];
            // add=l+r+p;
            System.arraycopy(left, 0, add, 0, left.length);
            System.arraycopy(right, 0, add, left.length, right.length);
            System.arraycopy(points_fast, 0, add, left.length + right.length, points_fast.length);

我的目标是对数组“add”进行排序。 注意:我试图将其转换为列表,然后使用集合。分类它不起作用


共 (1) 个答案

  1. # 1 楼答案

    我希望这能满足您的解决方案: 你只需要使用这个系列。排序并覆盖比较器

     List<String> mnames1 = Arrays.asList("-2l", "1r", "0p", "4p", "3l");
        System.out.println(mnames1+" before");
        Collections.sort(mnames1, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                String m = a.substring(0,a.length()-1);
                String n = b.substring(0,b.length()-1);
                return Integer.compare(Integer.parseInt(m),Integer.parseInt(n));
            }
        });
        System.out.println(mnames1+ "after");
    

    输出:

    [-2l, 1r, 0p, 4p, 3l] before

    [-2l, 0p, 1r, 3l, 4p]after