[英]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.