繁体   English   中英

排序“索引”数组

[英]Sorting 'Index' array

任何人都可以告诉在Java中对以下字符串'index'数组进行排序的最佳(简便)方法是什么

String [] menuIndex= { "0",
                       "1",
                       "2",
                       "3",
                       "0.0",
                       "0.0.1",
                       "0.0.0",
                       "0.0.4",
                       "14" ,
                       "14.0",
                       "0.1"  };
I need the sorted array in the following format
0, 
0.0, 
0.0.0,
0.0.1,
0.0.4,
0.1,
1,
2,
3,
14,
14.0

请帮助...

由于您已更改要求,因此您自己的比较器是正确的解决方案。

import java.util.Arrays;
import java.util.Comparator;

public class MyCmp implements Comparator<String> {

    @Override
    public int compare(String o1, String o2) {
        String[] parts1 = o1.split("\\.");
        String[] parts2 = o2.split("\\.");
        int max = Math.max(parts1.length, parts2.length);
        for (int i = 0; i < max; i++) {
            if (i < parts1.length && i < parts2.length) {
                Integer i1 = Integer.parseInt(parts1[i]);
                Integer i2 = Integer.parseInt(parts2[i]);
                if (i1 == i2)
                    continue;
                return i1.compareTo(i2);
            }
            if (i < parts1.length) {
                return 1;
            }
            if (i < parts2.length) {
                return -1;
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        String[] menuIndex = { "0",
                "1",
                "2",
                "3",
                "0.0",
                "0.0.1",
                "0.0.0",
                "0.0.4",
                "14",
                "14.0",
                "0.1" };
        Arrays.sort(menuIndex, new MyCmp());
        System.out.println(Arrays.toString(menuIndex));
    }

}

创建自己的比较器并使用它对数组进行排序。

使用Arrays.sort方法进行排序。下面是代码。

  String [] menuIndex= { "0","1","2","3","0.0","0.0.1","0.0.0","0.0.4","4","4.0","0.1"};
            Arrays.sort(menuIndex);
            for(String str:menuIndex){
                System.out.println(str);
            }

暂无
暂无

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

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