Java 如何使用基元类型按描述顺序排序? 我的处境
我有一个原始类型的数据结构,即Java 如何使用基元类型按描述顺序排序? 我的处境,java,Java,我有一个原始类型的数据结构,即int[][]数字我想按描述顺序排序 反向阵列 是的,我通过如下方式将数组转换为列表来实现:Collections.reverse(Arrays.asList(array)) 但目的是什么?我把它颠倒过来了,好吧,现在我通过这样做对它进行排序:Arrays.sort(array[I]) 然后…喷魔法。我只有ASC订单,没有DESC 还有别的办法吗 谢谢 这样做之后,我的结果是:(很明显,结果是不正确的) 应该是: 11111222333355555556678889
int[][]数字
我想按描述顺序排序
反向阵列
是的,我通过如下方式将数组转换为列表来实现:Collections.reverse(Arrays.asList(array))
但目的是什么?我把它颠倒过来了,好吧,现在我通过这样做对它进行排序:Arrays.sort(array[I])
然后…喷魔法。我只有ASC订单,没有DESC
还有别的办法吗
谢谢
这样做之后,我的结果是:(很明显,结果是不正确的)
应该是:
111112223333555555566788899
888
**77765555443322**
--- and so on..
编辑:
我尝试使用comparator,在这种情况下使用它似乎是做错了什么。因为通常它对我很有效。但是现在
Arrays.sort(arrInt[i],new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
}
Arrays.sort(arrInt[i],新的比较器(){
@凌驾
公共整数比较(整数o1,整数o2){
返回o2.compareTo(o1);
}
});
}
然后我使用int的包装类,comparator适合我。也许这个任务需要为您自己实现排序算法?;-) 如果仍要使用
数组
类,可以使用比较器实现排序
:
sort(T[] a, Comparator<? super T> c)
也许它会对你有所帮助。你有多种选择:
- 用于在排序后调用
ArrayUtils.reverse(数组)
- 使用
System.arraycopy
反向复制到新阵列中
- 将数组转换为
整数[]
并实现自定义比较器
然后数组。排序(数组,新的ReverseIntegerComparator())
公共类ReverseIntegerComparator实现Comparator{
@凌驾
公共整数比较(整数第一,整数第二){
返回第二个。比较(第一个);
}
}
另外,请确保您需要一个int[][]
。您的问题意味着您只需要int[]
。但是无论哪种方式,一旦你到达int[]
,你可以使用这些选项中的任何一个,可能还有许多其他选项。你发布的代码将在位置i对数组进行排序,但不会对包含所有数组的大数组进行排序。要做到这一点,首先对每个整数数组进行排序(如果不需要对其进行排序,则只需找到其最大值),然后执行以下操作
Arrays.sort(arrInt,new Comparator<Integer[]>(){
@Override
public int compare(Integer[] o1, Integer[] o2) {
return o2[0].compareTo(o1[0]);
}
});
}
Arrays.sort(arrInt,新的比较器(){
@凌驾
公共整数比较(整数[]o1,整数[]o2){
返回o2[0]。比较(o1[0]);
}
});
}
那么每个int[]
代表一个数字的位数?为什么不使用biginger[]
而不是int[][]
?据我所知,每个数组[I]都代表我的数组[I][]行,因为我想用这些数字执行一些操作。所以我需要它彼此分开。首先对反转进行评论,然后排序。。。如果要反转排序结果,请在排序后反转…:-)这毫无意义。我试过了。我将在编辑范围内发布我的代码。该任务不需要任何东西,仅用于练习目的。我用comparator做的,它似乎不起作用。我将用这个代码编辑我的帖子。如果我有一个整数,它就会工作。很遗憾,但我有int。在这种情况下,它是有意义的;我只需要在位置排序,因为我的索引是偶数,我按asc顺序排序,反之亦然;你应该更新你的问题,以明确这个意图,因为它不是。另外,检查你的英语;这需要一点思考才能明白你的意思。
Arrays.sort(a, Collections.reverseOrder());
public class ReverseIntegerComparator implements Comparator<Integer> {
@Override
public int compare(Integer first, Integer second) {
return second.compareTo(first);
}
}
Arrays.sort(arrInt,new Comparator<Integer[]>(){
@Override
public int compare(Integer[] o1, Integer[] o2) {
return o2[0].compareTo(o1[0]);
}
});
}