2012-05-04 55 views
1

正如標題所示,我有一個由整數對(int ai和int bi)組成的列表。我想僅基於int a對此列表進行排序,同時保留配對關係。我想知道是否有一種有效的方法來處理Java的一些標準庫。提前致謝!排序由整數對組成的列表

編輯: 我的確切實施是一個ArrayList<ArrayList<Integer>>其中每個ArrayList<Integer>恰好有兩個整數(ai和bi)。對不起,有任何困惑。

+0

你爲什麼不使用地圖? –

+0

什麼是您的名單的完整和確切的類型?它是'列表'還是別的? –

+0

你不能有一個int a和int b的列表,只有整數a,整數b。我懷疑你的問題描述是不正確的...告訴我們更多關於你使用的這些對......他們如何存儲在列表中? – Adrian

回答

1

使用Collections sort()Arrays sort()方法,它採用Comparator並使用自定義比較器,該自定義比較器僅檢查該對中的第一個整數。

像這樣(大致,根據您的具體類型):

Collections.sort(myList, new Comparator<IntegerPair>() { 
    @Override public int compare(IntegerPair x, IntegerPair y) { 
    return x.first - y.first; 
    } 
}); 

由於排序算法是穩定(每Javadoc中)你的名單將根據您的描述進行排序。

+1

你只需要'return x.first - y.first;' –

+0

太棒了,謝謝你! – xlnc

0

它可能會更安全一點使用已定義的整數比較:

Collections.sort(myList, new Comparator<IntegerPair>() { 
    @Override public int compare(IntegerPair x, IntegerPair y) { 
     return Integer.compare(x.first, y.first); 
    } 
});