繁体   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