Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何按大小对多个ArrayList进行排序?_Java_Sorting_Arraylist - Fatal编程技术网

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

Java:如何按大小对多个ArrayList进行排序?,java,sorting,arraylist,Java,Sorting,Arraylist,我有9个不同的ArrayList,我想列出前5个 我正在考虑按大小对那些数组列表进行排序 有可能吗?如果是,我怎样才能做到 经过几次尝试,我终于让它工作了,只想与大家分享 最好获取arraylist的大小并将其添加到大arraylist中 // creates an ArrayList that holds ArrayLists List allTheLists = new ArrayList(); allTheLists.add(pbaustraliaList.size()); allT

我有9个不同的
ArrayList
,我想列出前5个

我正在考虑按大小对那些
数组列表进行排序

有可能吗?如果是,我怎样才能做到


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

最好获取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));   
}
//创建保存ArrayList的ArrayList
列出所有列表=新建ArrayList();
添加(pbaustraliaList.size());
添加(pbotherList.size());
添加(pbunitedStatesList.size());
添加(pbunitedKingdomList.size());
添加(pbchinaList.size());
添加(pbgermanyList.size());
添加(pbindiaList.size());
添加(pbjapanList.size());
allTheLists.add(pbsingaporeList.size());
Comparator Comparator=Collections.reverseOrder();
集合。排序(所有列表、比较器);
//ArrayList的显示元素
System.out.println(“按降序排序后的ArrayList元素:”);

对于(int i=0;i而言,您可以执行以下操作:

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

你也可以这样做

public static <T> List<List<T>> sort(List<List<T>> list) {
        list.sort((xs1, xs2) -> xs1.size() - xs2.size());
        return list;
    }
公共静态列表排序(列表){
list.sort((xs1,xs2)->xs1.size()-xs2.size());
退货清单;
}

例如,您想先获得最短的列表,然后获得最长的列表?最长的列表。刚才看到了justin的一个示例。我将首先尝试。谢谢大家=)+1,但我会使用列表而不是ArrayList作为类型参数。@pcjuzer,谢谢。我也会的。但这是根据问题的需要量身定制的。将
ArrayList
的所有实例更改为
List
在这种特定情况下同样有效,但也更具可扩展性,并避免了原始类型警告。
public static <T> List<List<T>> sort(List<List<T>> list) {
        list.sort((xs1, xs2) -> xs1.size() - xs2.size());
        return list;
    }