Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对BigDecimal对象列表进行排序_Java_List_Sorting_Bigdecimal - Fatal编程技术网

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

Java 如何对BigDecimal对象列表进行排序,java,list,sorting,bigdecimal,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>();

考虑到以下输入:

-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);
        }
    }
在这种情况下,50应该是大于0的值


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

在代码中,您只调用了反转,反转了列表的顺序。您还需要在中对列表进行排序

这将实现以下目的:

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
    }
}
package-HackerRank;
导入java.util.*;
导入java.math.*;
分类
{
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
树集列表=新树集();
int testCase=sc.nextInt();
而(测试用例-->0)
添加(新的BigDecimal(sc.next());
System.out.println(list);//升序
System.out.println(list.degendingset());//降序
}
}

收藏。反转
只是反转列表。使用Collections.sort(list,Comparator.reverseOrder())我想您需要的是
排序
,而不是
反向
…但是
反向排序
从1.5开始就存在了。没错,我刚刚查看了Comparator.reverseOrder()API。谢谢你的更新!专业提示:如果你意识到你的答案不如它可能的好,试着更新它,使它是。对于三行答案,无需在编辑前添加“编辑:…”。您确定吗?尽管在名称上与JDK的TreeMap相似,但javadocs似乎表明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
    }
}