正如標題所示,我有一個由整數對(int ai和int bi)組成的列表。我想僅基於int a對此列表進行排序,同時保留配對關係。我想知道是否有一種有效的方法來處理Java的一些標準庫。提前致謝!排序由整數對組成的列表
編輯: 我的確切實施是一個ArrayList<ArrayList<Integer>>
其中每個ArrayList<Integer>
恰好有兩個整數(ai和bi)。對不起,有任何困惑。
正如標題所示,我有一個由整數對(int ai和int bi)組成的列表。我想僅基於int a對此列表進行排序,同時保留配對關係。我想知道是否有一種有效的方法來處理Java的一些標準庫。提前致謝!排序由整數對組成的列表
編輯: 我的確切實施是一個ArrayList<ArrayList<Integer>>
其中每個ArrayList<Integer>
恰好有兩個整數(ai和bi)。對不起,有任何困惑。
使用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中)你的名單將根據您的描述進行排序。
你只需要'return x.first - y.first;' –
太棒了,謝謝你! – xlnc
實現http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html爲您整數對和排序使用()我建議創建一個代表整數值對一類。這個類應該實現Comparable。使用sort()對其進行排序。
它可能會更安全一點使用已定義的整數比較:
Collections.sort(myList, new Comparator<IntegerPair>() {
@Override public int compare(IntegerPair x, IntegerPair y) {
return Integer.compare(x.first, y.first);
}
});
你爲什麼不使用地圖? –
什麼是您的名單的完整和確切的類型?它是'列表'還是別的? –
你不能有一個int a和int b的列表,只有整數a,整數b。我懷疑你的問題描述是不正確的...告訴我們更多關於你使用的這些對......他們如何存儲在列表中? – Adrian