Java: Как отсортировать несколько ArrayList по их размеру?

У меня есть 9 различных ArrayList , и я хочу получить список из лучших 5.

Я собираюсь отсортировать эти ArrayLists по их размеры.

Возможно ли это сделать? Если да, то как мне этого добиться?


После нескольких попыток я наконец-то заработал, просто хочу поделиться ими со всеми.

будет лучше получить размер массива и добавить его в большой 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));   
}
12
задан Dariusz 13 August 2013 в 06:03
поделиться

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 были в первых 5 списках.

Некоторые ссылки для справки:


В зависимости от того, как у вас хранятся ваши ArrayLists , код для создания списка будет выглядеть примерно так:

// creates an ArrayList that holds ArrayLists
List<ArrayList> allTheLists = new ArrayList<ArrayList>();
allTheLists.add(yourList1);
allTheLists.add(yourList2);
...
allTheLists.add(yourList9);
27
ответ дан 2 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: