如何对 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 来颠倒列表的顺序。您还需要在 reversed order.

中对列表进行排序

这样做就可以了:

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
    }
}