Java:如何按大小排序多个ArrayList?

我有9个不同的ArrayList ,我希望有一个前5名的列表。

我正在考虑按照它们的大小对这些ArrayLists进行排序。

有可能吗? 如果是这样,我怎么能实现呢?


经过几次尝试后我终于开始工作,只想与大家分享。

获得arraylist的大小并将其添加到大型arraylist会更好

 // creates an ArrayList that holds ArrayLists List allTheLists = new ArrayList(); allTheLists.add(pbaustraliaList.size()); allTheLists.add(pbotherList.size()); allTheLists.add(pbunitedStatesList.size()); allTheLists.add(pbunitedKingdomList.size()); allTheLists.add(pbchinaList.size()); allTheLists.add(pbgermanyList.size()); allTheLists.add(pbindiaList.size()); allTheLists.add(pbjapanList.size()); allTheLists.add(pbsingaporeList.size()); Comparator comparator = Collections.reverseOrder(); Collections.sort(allTheLists,comparator); //display elements of ArrayList System.out.println("ArrayList elements after sorting in descending order : "); for(int i=0; i<allTheLists.size(); i++) { System.out.println(allTheLists.get(i)); } 

你能做的是以下几点:

 // this List of lists will need to contain // all of the ArrayLists you would like to sort List allTheLists; Collections.sort(allTheLists, new Comparator(){ public int compare(ArrayList a1, ArrayList a2) { return a2.size() - a1.size(); // assumes you want biggest to smallest } }); 

这将按列表的长度对列表列表进行排序。 排序列表中的第一个元素将是最长列表,最后一个元素将是最短列表。

然后,您可以遍历前5个列表以查看前5个列表。

一些链接供参考:

  • 排序教程
  • collectionsJavadoc
  • 比较者Javadoc

根据存储ArrayLists方式,创建List的代码如下所示:

 // creates an ArrayList that holds ArrayLists List allTheLists = new ArrayList(); allTheLists.add(yourList1); allTheLists.add(yourList2); ... allTheLists.add(yourList9); 

你也可以这样做

 public static  List> sort(List> list) { list.sort((xs1, xs2) -> xs1.size() - xs2.size()); return list; }