Java:如何按大小对多个 ArrayList 进行排序?
Posted
技术标签:
【中文标题】Java:如何按大小对多个 ArrayList 进行排序?【英文标题】:Java: How do I sort multiple ArrayList by their size? 【发布时间】:2011-03-29 11:34:55 【问题描述】:我有 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));
【问题讨论】:
您想拥有,例如,最短的列表在前,最长的在后? 最长的第一个。刚刚看到贾斯汀的一个例子。我先试试。谢谢大家=) 【参考方案1】:你可以做的是:
// this List of lists will need to contain
// all of the ArrayLists you would like to sort
List<ArrayList> allTheLists;
Collections.sort(allTheLists, new Comparator<ArrayList>()
public int compare(ArrayList a1, ArrayList a2)
return a2.size() - a1.size(); // assumes you want biggest to smallest
);
这将按每个列表的长度对列表列表进行排序。排序列表中的第一个元素将是最长的列表,最后一个将是最短的列表。
然后,您可以遍历前 5 个列表以查看前 5 个是什么。
一些参考链接:
Sorting tutorial Collections Javadoc Comparator Javadoc根据您存储ArrayLists
的方式,创建List<ArrayList>
的代码如下所示:
// creates an ArrayList that holds ArrayLists
List<ArrayList> allTheLists = new ArrayList<ArrayList>();
allTheLists.add(yourList1);
allTheLists.add(yourList2);
...
allTheLists.add(yourList9);
【讨论】:
+1,但我会使用 List 而不是 ArrayList 作为类型参数。 @pcjuzer,谢谢。我也会的。但这是根据问题的需要量身定制的。 将ArrayList
的所有实例更改为List<?>
在这种特定情况下同样有效,但也更具可扩展性并避免了原始类型警告。【参考方案2】:
你也可以这样做
public static <T> List<List<T>> sort(List<List<T>> list)
list.sort((xs1, xs2) -> xs1.size() - xs2.size());
return list;
【讨论】:
以上是关于Java:如何按大小对多个 ArrayList 进行排序?的主要内容,如果未能解决你的问题,请参考以下文章