为了账号安全,请及时绑定邮箱和手机立即绑定

按降序对基本类型的数组进行排序

按降序对基本类型的数组进行排序

慕丝7291255 2019-12-15 16:12:36
我有很多原始类型(双精度)。如何按降序对元素进行排序?不幸的是,Java API不支持使用Comparator对基本类型进行排序。一种解决方法是排序,然后反转:double[] array = new double[1048576];...Arrays.sort(array);// reverse the arrayfor (int i = 0; i < array.length / 2; i++) {     // swap the elements     double temp = array[i];     array[i] = array[array.length - (i + 1)];     array[array.length - (i + 1)] = temp;}这很慢-特别是在数组已经很好排序的情况下。有什么更好的选择?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

Guava具有将原始数组转换为包装类型列表的方法。令人高兴的是,这些列表是实时视图,因此对它们的操作也可以在基础数组上进行(类似于Arrays.asList(),但对于基元)。


无论如何,这些列表中的每一个都可以传递给Collections.reverse():


int[] intArr = { 1, 2, 3, 4, 5 };

float[] floatArr = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f };

double[] doubleArr = { 1.0d, 2.0d, 3.0d, 4.0d, 5.0d };

byte[] byteArr = { 1, 2, 3, 4, 5 };

short[] shortArr = { 1, 2, 3, 4, 5 };

Collections.reverse(Ints.asList(intArr));

Collections.reverse(Floats.asList(floatArr));

Collections.reverse(Doubles.asList(doubleArr));

Collections.reverse(Bytes.asList(byteArr));

Collections.reverse(Shorts.asList(shortArr));

System.out.println(Arrays.toString(intArr));

System.out.println(Arrays.toString(floatArr));

System.out.println(Arrays.toString(doubleArr));

System.out.println(Arrays.toString(byteArr));

System.out.println(Arrays.toString(shortArr));

输出:


并[5,4,3,2,1]

[5.0,4.0,3.0,2.0,1.0]

[5.0,4.0,3.0,2.0,1.0]

[5,4,3,2,1]

[5,4,3 ,2,1]



查看完整回答
反对 回复 2019-12-16
  • 3 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信