簡體   English   中英

按子ArrayList的長度對2d ArrayList進行排序

[英]Sort 2d ArrayList by the length of the sub ArrayList

我有一個二維數組:

ArrayList<List<Integer>> main= new ArrayList<>();    
ArrayList<Integer> sub=new ArrayList<>();
sub.add(1);
sub.add(2);
main.add(sub);
.............

現在主數組看起來像

  main-> [[1,2],[3],[4,5,6],[6,6,8,4]]

現在,我想按子數組的長度對數組進行排序。 我如何獲得以下結果? 還是有一種無需循環就可以獲取子數組的最大元素長度(在這種情況下為4)的方法? 我可以不循環就得到4嗎? 我需要排序,但是如果不可能,我想獲得子數組的最大長度maxlength=4 ;

[[6,6,8,4],[4,5,6],[1,2],[3]]

這是一種按子列表的長度排序的方法:

您可以為兩個ArrayList<Integer>創建一個Comparator ,以比較它們的長度,並將其用作Collections.sort()的比較器參數。

class LengthComparator implements Comparator<ArrayList<Integer>> {
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2) {
        return list2.size() - list1.size(); // sort descending in length
    }
}

// ...

ArrayList<ArrayList<Integer>> mainList;

// ... initialization, adding data

// sort
Collections.sort(mainList, new LengthComparator());

至於獲得最大而不循環...不是真的。 我的意思是,除了循環(例如遞歸)外,您還可以通過其他方式遍歷結構,但最后您必須檢查每個元素...

想一想,如果不將某事物與該組中的其他所有事物進行比較,該如何知道某事物在該組中是否具有最大值?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM