Java:如何按列表的大小对列表进行排序?

2022-09-04 07:18:15

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

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

有可能做到这一点吗?如果是这样,我该如何实现?


经过几次尝试,我终于让它工作了,只是想与大家分享。

最好获取数组列表的大小并将其添加到大数组列表中

// 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 个列表是什么。

一些参考链接:


根据存储方式,创建代码将如下所示:ArrayListsList<ArrayList>

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

答案 2

你也可以这样做

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

推荐