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