如何对 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 来颠倒列表的顺序。您还需要在 reversed order.
中对列表进行排序
这样做就可以了:
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
}
}
给定以下输入:
-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 来颠倒列表的顺序。您还需要在 reversed order.
中对列表进行排序这样做就可以了:
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
}
}