[英]Trying to sort an ArrayList of Arraylists
試圖對我包含以下內容的Arraylist進行排序
[[2/11, 11/48], [8/35, 35/288], [16/43, 43/288], [4/5, 5/16], [75/152, 19/210], [135/163, 163/1680]]
目前,我已經使用以下方式對此Arraylist進行了排序:
for(int j = 0; j < knowledgeD.size()-1; j++) {
if(knowledgeD.get(j).get(0).compareTo(knowledgeD.get(j+1).get(0)) == 1) {
Collections.swap(knowledgeD, j, j+1);
這會對真值進行排序,這是每個括號中的第一個值,所以2/11 8/35等,依數值排序,從小到大,
但是,我注意到它在中間的某個地方弄亂了,還沒有命令4/5和75/132,所以我不知道為什么。 我試圖添加此故障安全代碼來做顯而易見的事情,
for(int k = 0; k < knowledgeD.size()-3; k++) {
if(knowledgeD.get(k).get(1).compareTo(knowledgeD.get(k+1).get(1)) == -1){
Collections.swap(knowledgeD, k-1, k+1);
但是,由於我已實現此代碼,因此我不斷使索引超出范圍錯誤。 誰能伸出援手?
干杯,
辛
據我了解,您嘗試根據子列表的第一個元素的自然順序對列表進行排序。 在Java中,這通常是由比較器完成的,無需向任何對象添加新方法:
Comparator<List<Comparable>> order = new Comparator<List<Comparable>>() {
@Override
public int compare(List<Comparable> o1, List<Comparable> o2) {
return o1.get(0).compareTo(o2.get(0));
}
};
Collections.sort(knowledgeD, order);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.