Java: How do I sort multiple ArrayList by their size?

天大地大妈咪最大 提交于 2020-01-12 04:44:45

问题


I have 9 different ArrayList and I want to have a list of the top 5.

I'm thinking of sorting those ArrayLists by their sizes.

Is it possible to do that? If so, how can I achieve that?


After a few try i finally got it working, just want to share it with everyone.

it will be better to get the size of the arraylist and add it to the big 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:


What you could do is the following:

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

This will sort the list of lists by the length of each list. The first element in the sorted list will be the longest list, and the last one will be the shortest list.

Then, you can iterate through the first 5 lists to see what the top 5 were.

Some links for reference:

  • Sorting tutorial
  • Collections Javadoc
  • Comparator Javadoc

Depending on how you have your ArrayLists stored, the code to create a List<ArrayList> would look something like this:

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



回答2:


you can do like this as well

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


来源:https://stackoverflow.com/questions/3477272/java-how-do-i-sort-multiple-arraylist-by-their-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!