如何使用原始类型按顺序排序?

时间:2013-12-07 17:32:24

标签: java

我的情况

我有一个原始类型为int[][] numbers的数据结构。 我想按顺序排序;

反向数组

是的,我是通过将我的数组转换为这样的列表来完成的:Collections.reverse(Arrays.asList(array)) 但目的是什么?我已经扭转了它,好吧,现在我通过这样做来排序:Arrays.sort(array[i])

然后...... PUFF MAGIC。我只有ASC订单,而不是DESC。

还有其他办法吗?

谢谢!

完成此操作后,我的结果是:(显然结果不正确)

111112223333555555566788899
888
2334455556777
33
113359
11222344455566667777788889
2555679
12
344445566788
156779

应该是:

111112223333555555566788899
888
**77765555443322**
--- and so on..

编辑:

我尝试使用比较器,似乎我在这种情况下使用它做错了。因为通常它对我很有用。但现在......

  Arrays.sort(arrInt[i],new Comparator<Integer>(){

                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2.compareTo(o1);
                }

            });
        }

然后我使用Wrapper类的int,比较器适合我。

3 个答案:

答案 0 :(得分:2)

您有多种选择:

  • 使用Apache Commons Lang在排序后致电ArrayUtils.reverse(array)
  • 使用System.arraycopy反向复制到新阵列。
  • 将您的数组转换为Integer[]并实施自定义Comparator然后Arrays.sort(array, new ReverseIntegerComparator())

    public class ReverseIntegerComparator implements Comparator<Integer> {
    
        @Override
        public int compare(Integer first, Integer second) {
            return second.compareTo(first);
        }
    }
    

另外,请确保您需要int[][]。您的问题意味着您只需要int[]。但无论哪种方式,一旦你到达int[],你可以使用这些选项中的任何一个,也可能使用其他许多选项。

答案 1 :(得分:0)

也许这个任务需要为你自己实现排序算法? ;-) 如果您仍想使用Arrays课程,则可以使用sort实施Comparator

sort(T[] a, Comparator<? super T> c)

并提供适当的比较器。

或者尝试

Arrays.sort(a, Collections.reverseOrder());

也许它会帮助你。

答案 2 :(得分:0)

您发布的代码会将数组排序到位置i,但不会对包含所有数组的大数组进行排序。要做到这一点,首先对每个整数数组进行排序(或者如果你实际上不需要对它进行排序就找到它的最大值),然后执行

Arrays.sort(arrInt,new Comparator<Integer[]>(){
        @Override
        public int compare(Integer[] o1, Integer[] o2) {
            return o2[0].compareTo(o1[0]);
        }
    });
}