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

时间:2015-06-20 20:55:02

标签: java list sorting bigdecimal

给出以下输入:

-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列表从最高到最低排序?

3 个答案:

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