【问题标题】:Sort 2d ArrayList by the length of the sub ArrayList按子 ArrayList 的长度对 2d ArrayList 进行排序
【发布时间】:2014-11-27 01:57:34
【问题描述】:

我有一个二维数组:

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]]

【问题讨论】:

  • sub数组有什么用???
  • @Devavrata 子数组从算法添加到主数组

标签: java arrays sorting arraylist


【解决方案1】:

这是一种按子列表长度排序的方法:

您可以为两个ArrayList&lt;Integer&gt; 创建一个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());

至于在不循环的情况下获得最大值......不是真的。我的意思是您可以以不同于循环(例如递归)的方式迭代结构,但最后您必须检查每个元素...

想一想,如果不与组中的其他所有内容进行比较,如何知道某项在组中是否具有最大值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-26
    • 2019-06-14
    • 2015-10-16
    • 1970-01-01
    • 2012-11-27
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多