按点运算符分隔字符串数组值

问题描述 投票:-1回答:1

我有一个字符串数组,其值分别为[“ 1.123.4”,“ 5.12.6”,“ 1.123.2”]。我想将该数组排序为[“ 1.123.2”,“ 1.123.4”, “ 5.12.6”]。我尝试拆分和排序,但没有锻炼。有人可以帮助我解决此问题吗?

java sorting
1个回答
0
投票

创建一个Comperator以所需的方式实现比较操作,然后使用该操作对数组进行排序。读者可以自己进行修改以将字符串更改为数字以进行数字比较。]

/* assume "01" is not the same as "1" */
public class VersionComparator implements Comparator<String> {
    @Override 
    int compare(String a, String b) {
        String[] aparts = a.split("\\.");
        String[] bparts = b.split("\\.");

        if( a.compareTo(b) == 0) {
            // a and b are exactly the same.
            return 0;
        }

        for( int i = 0; i < aparts.length; i++) {
            if( bparts.length < i) {
               // a has more elements; previous parts equal.
               // a is bigger.
               return 1; 
            }
            if( aparts[i].compareTo(bparts[i]) != 0) {
                // a and b are not equal in this segment; standard compare works.
                return aparts[i].compareTo(bparts[i]);
            }
            // same so far ... check the next segment.
        }
        // b has more elements than a but is otherwise the same.
        // b is bigger.
        return -1;
    }
}

现在,将其传递给Arrays.sort()方法。

Arrays.sort()    
© www.soinside.com 2019 - 2024. All rights reserved.