簡體   English   中英

如何對BigDecimal對象列表進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM