String[] x = Arrays.copyOf(s, n);
Arrays.sort(x,Collections.reverseOrder(Comparator.comparing(BigDecimal::new)));
s = x;
答案 0 :(得分:1)
Java版本8获得了更强大的功能。 Java 7:
假设s
是String[]
,n
是一个小于或等于s
中元素数量的整数:
String[] x = Arrays.copyOf(s, n);
将n
的{{1}}元素复制到s
。
<小时/>
x
根据Arrays.sort(x,Collections.reverseOrder(Comparator.comparing(BigDecimal::new)));
每个元素的x
表示,按降序排序BigDecimal
。请注意使用x
和运算符BigDecimal::new
(Java 8新增功能),它从::
中选择BigDecimal
的构造函数。
java.lang.String
设置s = x;
以引用新排序的数组。
答案 1 :(得分:0)
String[] x = Arrays.copyOf(s, n);
- 将s的n个元素复制到x。
BigDecinal::new
有一个字符串构造函数,因此类似于string -> new BigDecinal(string)
下一步你有Comparator
并声明了如何比较,下一步你宣布了必须在你的表中应用的顺序
如果你想了解步骤,那么好的选择是提取变量的步骤:
String[] x = Arrays.copyOf(s, n);
final Comparator<String> comparing = Comparator.comparing(string -> new BigDecimal(string));
final Comparator<String> order = Collections.reverseOrder(comparing);
Arrays.sort(x, order);
s = x;
答案 2 :(得分:0)
正如here所述,Collections.reverseOrder(c)
返回一个比较器,它强制指定比较器的反向排序。
Comparator.comparing(BigDecimal::new)
比较两个BigDecimal
(x,y),如果-1
则返回x < y
,x==y
则返回0,x > y
则返回1。
因此,Collections.reverseOrder(Comparator.comparing(BigDecimal::new))
返回一个比较器,它返回数字自然排序的倒数。
因此,您的数组将按相反的顺序排序。