我是一名C++程序员,现在我正在使用Java(我确实拥有大量的Java经验)。在Java中自定义排序的最佳方式是什么?
基本上,我想重新创建我在C++中经常使用的pair<int,int>
,并且我想让它按第二个整数值排序。
我在互联网上搜索,并尝试的要对此,使用比较包括不同的方式,可比等
我基本上是创建一个测试程序,它看起来像这样:
import java.math.*;
import java.util.*;
import java.io.*;
import java.text.*;
class PairTest
{
public static void main (String args[]) // entry point from OS
{
new PairTest().run();
}
public void run(){
Pair foo = new Pair(1,2);
System.out.println(foo.first + " "+ foo.second);
ArrayList <Pair> al = new ArrayList<Pair>();
for(int i =10;i>0;i--){
al.add(new Pair(i, i*2));
}
for(int i =0;i<al.size();i++){
System.out.println(al.get(i).first + " " + al.get(i).second);
}
Collections.sort(al);
for(int i =0;i<al.size();i++){
System.out.println(al.get(i).first + " " + al.get(i).second);
}
}
private class Pair implements Comparable{
public int first;
public int second;
public Pair (int a, int b){
this.first = a;
this.second = b;
}
int compareTo (Pair o){
return new Integer(this.second).compareTo(new Integer(o.second));
}
}
}
什么是最好的方式去做一个自定义的排序函数,以便ArrayList按“第二个”变量排序。我想要一个快速而安全的方法,目前,编译器告诉我“PairTest.Pair不会覆盖抽象方法compareTo ...”
我真的不知道发生了什么,任何帮助将不胜感激。
是的,我想,用适当的铸造,但我的程序给我打电话Collections.sort麻烦时(); – 2012-02-26 03:30:39
而不是一个列表中的排序对,一个常见的模式是使用一个地图,只要这些值是唯一的(即使没有,也有解决方案),例如尝试'TreeMap'你正在排序的值是关键。 –
2012-02-26 07:55:46