给出以下输入:
-100
50
0
56.6
90
我已将每个值添加为BigDecimal
到列表中。
我希望能够从最高值到最低值对列表进行排序。
我试图通过以下方式执行此操作:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<BigDecimal> list = new ArrayList<BigDecimal>();
while(sc.hasNext()){
list.add(new BigDecimal(sc.next()));
}
Collections.reverse(list);
for(BigDecimal d : list){
System.out.println(d);
}
}
哪个输出:
90
56.6
0
50
-100
在这种情况下,50应该是一个高于0的值。
如何在考虑到十进制和非十进制值的情况下,将BigDecimal列表从最高到最低排序?
答案 0 :(得分:9)
在你的代码中,你只是调用reverse来反转列表的顺序。您还需要在reversed order。
中对列表进行排序这样可以解决问题:
Collections.sort(list, Collections.reverseOrder());
答案 1 :(得分:0)
您可以使用org.apache.commons.collections.list.TreeList
。无需排序。它将按排序顺序保持插入的对象。然后你可以根据需要反转它。
答案 2 :(得分:0)
你可以尝试这个,它对我有用:
package HackerRank;
import java.util.*;
import java.math.*;
class Sorting
{
public static void main(String []args)
{
Scanner sc = new Scanner(System.in);
TreeSet<BigDecimal> list = new TreeSet<BigDecimal>();
int testCase = sc.nextInt();
while(testCase-- > 0)
list.add(new BigDecimal(sc.next()));
System.out.println(list); //ascending order
System.out.println(list.descendingSet()); //descending order
}
}