[英]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.