2015-01-27 27 views
7

Bir String dizisini kısa, basit bir şekilde sıralamaya çalışıyorum. Collections.sort'u kullanmaya çalışıyorum ama neden bir şey sıralamadığını anlamıyorum. Kodu: her iki durumda daCollections.sort hiçbir şeyi sıralamakta değil

public static String[] FishNamesSorted; 
..... 
List<String> nameslist = new ArrayList<String>(); 
nameslist.toArray(FishNamesSorted); 
Collections.sort(nameslist, String.CASE_INSENSITIVE_ORDER); <--- NOT WORKING 

Collections.sort(nameslist, new Comparator<String>() { <--- NOT WORKING 
    @Override 
    public int compare(String p1, String p2) { 
    if (p1 == null) { 
     return 1; 
    } 
    if (p2 == null) { 
     return -1; 
    } 
    return p1.compareToIgnoreCase(p2); 
    } 
}); 

Sonuçlar:

  • Poecilia Latipinna
  • Poecilia Reticulata
  • Notropis Chrosomus
  • Pseudomugil Gertrudae
  • ....

Whyyyy?

+0

'un "Liste " ile nasıl çalıştığını yanlış anlamış mıyım? –

+2

'nameslist' türünün adı nedir? – Eran

+5

Lütfen problemi gösteren kısa ama eksiksiz bir programı gösterin. "Collections.sort" kesinlikle * yapar * genel olarak çalışır ... –

cevap

-1

çözüm olduğunu

Arrays.sort(FishNamesSorted, String.CASE_INSENSITIVE_ORDER) 

5

Collections.sort(list) kesinlikle çalışır. Kodunuzdaki sorun şeklindedir ve listeyi sıralamasından önce diziye yerleştirdiniz. Dizi Eğer sen koymak gerekiyor dizide

List<String> nameslist = new ArrayList<String>(); 

/* add elements to namesList */ 

Collections.sort(nameslist); 
Object[] fishNamesSorted = nameslist.toArray(); 
0

bunu geçirmeden önce ilk listenizi sıralamak eğer sıralanması gerektiğini sizin şu anda yapmıyor o sıralanır sonra senin FishNamesSorted dizisinde nameslist.

bir göz, sadece Bilginize
String[] FishNamesSorted; 

    // creating and initializing list, 
    List<String> nameslist = new ArrayList<String>(); 

    // Adding some data in your list 
    nameslist.add("Poecilia Latipinna"); 
    nameslist.add("Poecilia Reticulata"); 
    nameslist.add("Notropis Chrosomus"); 
    nameslist.add("Pseudomugil Gertrudae"); 

    // sorting your list, 
    Collections.sort(nameslist); 

    // print sorted list 
    for (String s : nameslist){ 
     System.out.println(s); 
    } 

    System.out.println("==================="); 

    // convert the sorted list to an array and assign it 
    // a String array. 
    FishNamesSorted = nameslist.toArray((new String[nameslist.size()])); 

    // print your String array, 
    for (String s : FishNamesSorted){ 
     System.out.println(s); 
    } 

, yapabileceğiniz öğe sıralama işlemi çalışma daha hızlı Java 8 kullanarak dizinin her tür sıralama için bir API sağlar

Java 8. kullanıyorsanız Arrays.parallelSort(type), Collection.sort ile aynı şekilde sıralama yapar, ancak paralel bir uygulama ile. Java Koleksiyonları Framework> (Collections.sort ve Arrays.sort) tüm çağıran evre sıralama operasyon sırayla gerçekleştirmek tarafından sağlanan

Güncel sıralama uygulamaları. Bu geliştirme , Diziler sınıfı tarafından sağlanan aynı dizi sıralama işlemlerini sunacaktır, ancak Çatal/Birleştirme çerçevesini kullanan paralel bir uygulama ile. Bu yeni API'ler, paralel sıralama tamamlanana kadar işleminin sıralama işlemine devam etmeyeceği için arama iş parçacığına ile hala uyumludur.bunu uygulamak için

,

yerine, yukarıdaki kod Arrays.parallelSort ile birlikte

Collections.sort(nameslist); 

, Collections.sort yerine

Arrays.parallelSort(nameslist.toArray(new String[nameslist.size()])); 
İlgili konular