java - 如何按特定数据段对数组进行排序?

标签 java arrays

我有一个像这样的字符串数组:

String[] array = { "CC/2", "DDD/3", "AAAA/4", "B/1" };
Arrays.sort(array);
System.out.println(Arrays.toString(array));

当我执行这段代码时,我得到以下信息:

[AAAA/4, B/1, CC/2, DDD/3]

这是正确的,但是我想改为按编号值对其进行排序,以便得到以下结果:

[B/1, CC/2, DDD/3, AAAA/4]

我该怎么做?

最佳答案

你可以通过使用 Comparator<String> 来做到这一点

    /* You may found some shortcuts for this
       but following code is easy to understand 
    */
    String[] array = { "CC/2", "DDD/3", "AAAA/4", "B/1"};
    Arrays.sort(array, new Comparator<String>() {

        public int compare(String o1, String o2) {
            int i1,i2;
            /* 
               You should add some checks like 
               1] null check
               or 
               2] whether String contains / or not etc before going for further 
               code.
            */
            /* Get Numbers from String To compare */
            i1=Integer.valueOf(o1.split("/")[1]);
            i2=Integer.valueOf(o2.split("/")[1]);
            //May throw NumberFormatException so be careful with this

            if(i1>i2)
                return 1;
            else if(i1<i2)
                return -1;
            else
                return 0;
        }
    });
    System.out.println(Arrays.toString(array));//Print array

关于java - 如何按特定数据段对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081433/

相关文章:

java - 如何按难度级别显示所有问题

java - Spring 依赖注入(inject)到匿名实现中

PHP数组,选择打印特定元素及其内容

java - 如何按照列表描述的顺序有效地处理HashMap?

java - Eclipse 任务为空

java - java中排序数组包含一些数组

c - 数组中最长的一系列元素

c++ - 根据条件划分数组中的元素

c++ - 如何定义C++编译时定义长度的空白数组?

java - 在 Android Studio 中以编程方式添加值的字符串名称