我有一个原始类型为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,比较器适合我。
答案 0 :(得分:2)
您有多种选择:
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]);
}
});
}