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; }