[英]How to sort a list of BigDecimal objects
鑒於以下輸入:
-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列表從最高到最低排序?
在您的代碼中,您只是調用reverse來反轉列表的順序。 您還需要按相反的順序對列表進行排序。
這樣就可以了:
Collections.sort(list, Collections.reverseOrder());
您可以使用org.apache.commons.collections.list.TreeList
。 無需排序。 它將按排序順序保持插入的對象。 然后你可以根據需要反轉它。
你可以嘗試這個,它對我有用:
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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.