如何对BigDecimal对象列表进行排序

crm*_*ham 5 java sorting list bigdecimal

鉴于以下输入:

-100
50
0
56.6
90
Run Code Online (Sandbox Code Playgroud)

我已将每个值添加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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

哪个输出:

90
56.6
0
50
-100
Run Code Online (Sandbox Code Playgroud)

在这种情况下,50应该是高于0的值.

考虑到十进制和非十进制值,如何正确地将BigDecimal列表从最高到最低排序?

Fra*_*ker 10

在您的代码中,您只是调用reverse来反转列表的顺序.您还需要按相反的顺序对列表进行排序.

这样就可以了:

Collections.sort(list, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)