基于任意索引对数组进行排序

时间:2015-12-17 04:29:08

标签: java arrays sorting

所以我知道如何对intsfloats(或其他数据类型)的Java数组进行排序。但是,如果它是一个字符串数组String[] arr = {},其中数组包含2x^24x^4等元素。如您所见,有几个具有整数的索引,可以对其进行排序。

我认为对此进行排序的方法是在索引处拼接出数字。对这些数字进行排序,然后将每个旧索引映射到新索引。

我觉得有更好的方法。

基本问题:是否存在可以根据每个索引的某个索引处的整数对字符串数组进行排序的排序方法?

如果您想知道,这里将是算法的一些示例输入和输出。

Array: {"2x^3","2x^0","1x^1"}
Output:{"2x^3","1x^1","2x^0"} // Sorted based on last index

1 个答案:

答案 0 :(得分:2)

static final Comparator<String> myComparator = 
    new Comparator<String>() {
        public int compare(String s1, String s2)
        {
            // split s1 and s2, compare what you need
            // and return the result.
            // e.g.
            // char digit1 = s1[s1.length() - 1];
            // char digit2 = s2[s2.length() - 1];
            // return (int)(digit1 - digit2);
        }
     };

Collections.sort(list, myComparator);
// or
Arrays.sort(array, myComparator);

所以你让别人的排序方法为你做排序,你只需要提供一种说明如何比较项目的方法。您需要遵守一些规则和规定(例如,如果A&lt; B,B&lt; C,则A必须&lt; C)。

您也可以内联/匿名进行:

Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
        ...
    }
 });
相关问题