Java 数组排序降序
我是一个新的java程序员,一直在使用这个网站学习很多方法。今天,我在练习一个项目时遇到了另一个问题 我有一个数组:Java 数组排序降序,java,arrays,sorting,Java,Arrays,Sorting,我是一个新的java程序员,一直在使用这个网站学习很多方法。今天,我在练习一个项目时遇到了另一个问题 我有一个数组: final int EXAMS = 5; int[] scores = new int [EXAMS]; 然后通过扫描仪对象向用户询问此数组的值: for (int index = 0; index < EXAMS; index++) { System.out.println("Enter the score for " + (in
final int EXAMS = 5;
int[] scores = new int [EXAMS];
然后通过扫描仪对象向用户询问此数组的值:
for (int index = 0; index < EXAMS; index++)
{
System.out.println("Enter the score for " + (index+1) +":");
scores[index] = kb.nextInt();
if (scores[index] < 0){
System.out.println("The number you have entered is invalid.");
scores[index] = kb.nextInt();
}
}
但我希望排序是降序的。当我把
Arrays.sort(分数、集合.reverseOrder())代码>
我收到一个错误,上面写着:“找不到合适的排序方法。”请帮助。在数组中没有排序
方法接受int[]
和比较器。Arrays
类中接受比较器的sort
方法需要引用类型的数组(而int[]
是基元类型的数组)
如果将scores
数组的类型从int[]
更改为Integer[]
,则代码将正常工作,因为方法公共静态无效排序(T[]a,Comparator可以工作(使用Integer
对象而不是原语int
):
不适用于基本体。请尝试此
Integer[] a = new Integer[]{1,2,3,5,4};
Arrays.sort(a,Collections.reverseOrder());
for(int i:a)
{
System.out.println(i);
}
java中没有数组的排序方法。但是ArrayList有一个排序方法。您可以使用下面的代码对列表进行反向排序
List l=new ArrayList();
l.add(5);
l.add(1);
l.add(2);
l.add(3);
Collections.sort(l,Collections.reverseOrder());
System.out.println(l);
无法工作,因为数组是基元类型。您可以从int更改为Integer或尝试其他操作,如:
Arrays.sort(scores);
ArrayUtils.reverse(scores);
最后一个选项是生成自己的代码。您只需将数组类型从基本类型更改为基本包装类
,即int[]分数=新的int[考试]
更改为整数[]分数=新的整数[考试]
Arrays.sort
接受第一个参数中的包装器数组not primitive。在插入时对数组进行排序。。
Arrays.sort(a, Collections.reverseOrder());
Integer[] a = new Integer[]{1,2,3,5,4};
Arrays.sort(a,Collections.reverseOrder());
for(int i:a)
{
System.out.println(i);
}
List l=new ArrayList();
l.add(5);
l.add(1);
l.add(2);
l.add(3);
Collections.sort(l,Collections.reverseOrder());
System.out.println(l);
Collections.reverseOrder()
Arrays.sort(scores);
ArrayUtils.reverse(scores);