繁体   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