有一个ArrayList<Coin>,每个Coin含有一个double value和一个String name,要求根据value的大小对ArrayList<Coin>降序排列,用comparator。能给出代码吗,关键是comparator的用法。部分代码如下:
public class CoinSortTester
{
public static void main(String[] args)
{
ArrayList<Coin> a = new ArrayList<Coin>();
a.add(new Coin(0.05, "Nickel"));
a.add(new Coin(0.05, "Nickel"));
a.add(new Coin(0.25, "Quarter"));
a.add(new Coin(0.01, "Penny"));
a.add(new Coin(0.1, "Dime"));
Comparator<Coin> comp = new ReverseCoinComparator();
Collections.sort(a, comp);
System.out.println(a);
System.out.println("Expected: [Coin[value=0.25,name=Quarter],
Coin[value=0.1,name=Dime], Coin[value=0.05,name=Nickel],
Coin[value=0.05,name=Nickel],
Coin[value=0.01,name=Penny]]");
}
}
public class CoinSortTester
{
public static void main(String[] args)
{
ArrayList<Coin> a = new ArrayList<Coin>();
a.add(new Coin(0.05, "Nickel"));
a.add(new Coin(0.05, "Nickel"));
a.add(new Coin(0.25, "Quarter"));
a.add(new Coin(0.01, "Penny"));
a.add(new Coin(0.1, "Dime"));
Comparator<Coin> comp = new ReverseCoinComparator();
Collections.sort(a, comp);
System.out.println(a);
System.out.println("Expected: [Coin[value=0.25,name=Quarter],
Coin[value=0.1,name=Dime], Coin[value=0.05,name=Nickel],
Coin[value=0.05,name=Nickel],
Coin[value=0.01,name=Penny]]");
}
}
http://lgstarzkhl.iteye.com/blog/515329
在Coin类中加上public class Coin implements Comparable<Coin>{
// 实现compareTo()方法
public int compareTo(Coin o) {
int thisValue = (int)(this.getValue()*10000);
int comScore = (int)(o.getValue()*10000);
return comScore - thisScore;
}
}// 调用时直接
Collections.sort(new Arraylist<Coin>);
int comScore = (int)(o.getValue()*10000);这两句什么意思,为什么要*10000呢