- 此问题在此处已有答案**:
Sort large arrays of primitive types in descending order(22个答案)
Sorting int array in descending order [duplicate](4个答案)
3小时前关门了。
我正在尝试用排序int []的方法来排序long []数组,但它不起作用。
long[] nums ={2,3,4,5,23,54,1};
Arrays.sort(nums,(a,b)->{
return b-a;
});
System.out.println(Arrays.toString(nums));
出现如下错误:
error: no suitable method found for sort(long[],(a,b)->{ r[...] a; })
很抱歉,如果它感觉像开始,但我卡住了。
2条答案
按热度按时间xienkqul1#
Arrays
类提供了两个方法,它们将long
基元值数组作为第一个参数:sort
和sort
。这两个方法都不接受Comparator
,也不接受任何其他类型的lambda。你引用的错误信息就是这么说的。
为了实现你的目标,我奇怪地发现Java中没有内置方便的方法来反转
long
基元数组。你要么必须使用swap elements in reverse order,要么需要将基元装箱到对象中。这两种方法都在堆栈溢出中介绍过。或者看看第三方库,可能是 Google Guava(example)、*Eclipse集合 * 或 *Apache共享资源 *(example)。
jogvjijk2#
Basil的答案是正确的,因为
Arrays
上没有使用long
数组和Comparator
的排序方法。如果使用Eclipse Collections,则可以将长数组 Package 在
MutableLongList
中,并使用支持LongComparator
的原语sortThis
。如果您不想创建
MutableLongList
Package 器,也可以使用LongQuickSort
将长数组与LongComparator
排序。有一个关于here库中原语排序功能的博客。
注意:我是Eclipse集合的提交者。