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