我是一名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