2010-08-13 12 views
12

Ben 9 farklı ArrayList var ve ben onların boyutlarına göre bu ArrayLists sıralama düşünüyorum top 5Java: Birden çok ArrayList'i boyutlarına göre nasıl sıralarım?

listesini yapmak istiyorum.

Bunu yapmak mümkün mü? Eğer öyleyse, bunu nasıl başarabilirim?


Birkaç deneme yaptıktan sonra sonunda çalıştım, sadece herkesle paylaşmak istiyorum.

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

Bu listesini sıralanır:

o arraylist boyutunu almak ve büyük arraylist eklemek için daha iyi olacaktır

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

ve en uzun son:böyle bir şey görünürdü? – cHao

+0

en uzun ilk. Justin'ten bir örnek gördüm. Önce bunu deneyeceğim. teşekkürler guys =) – user419596

cevap

24

Ne yapabilirdi şudur Her listenin uzunluğuna göre listeler. Sıralanan listedeki ilk öğe en uzun liste olacak ve sonuncusu en kısa liste olacaktır.

Ardından, ilk 5 listelerde en iyi 5'in ne olduğunu görmek için yineleyebilirsiniz. referans için

bazı bağlantılar:


Eğer senin ArrayLists saklanan, kod biroluşturmak zorunda şekline bağlı olarak

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

+1, ancak ArrayList yerine List'ü type parametresi olarak kullanırdım. – pcjuzer

+0

@pcjuzer, teşekkürler. Ben de yapardım. Ancak bu, sorunun ihtiyaçlarına göre düzenlenmiştir. – jjnguy

+2

"ArrayList" öğesinin tüm örneklerinin "List " olarak değiştirilmesi, bu özel durumda olduğu gibi, aynı zamanda daha genişletilebilir ve işlenmemiş tür uyarılarını da önler. –

0

siz de böyle yapabilirsiniz

Önce, örneğin, en kısa liste var istiyorum
public static <T> List<List<T>> sort(List<List<T>> list) { 
     list.sort((xs1, xs2) -> xs1.size() - xs2.size()); 
     return list; 
    } 
İlgili konular