2016-06-27 5 views
-6

Ich möchte Namen alphabetisch sortieren, aber Sonderzeichen sollten zuerst nicht zuletzt kommen.Comparator - Sonderzeichen Sortierung

Von nachfolgenden Code Sonderzeichen letzte

Collections.sort(elementList,new Comparator<Element>() { 
       @Override 
       public int compare(Element o1, Element o2) { 
        return o1.getDisplayName().toUpperCase().compareTo(o2.getDisplayName().toUpperCase()); 
       } 
      }); 
+4

Es scheint, dass Sie vergessen haben, eine Frage in Ihre Frage aufzunehmen. – Biffen

+0

Wenn die Standardreihenfolge der Zeichenfolge nicht hilft, müssten Sie Ihre eigene Logik schreiben, um Objekte mit Sonderzeichen auf andere Weise zu behandeln. –

+0

Könnten Sie bitte einige Beispiele nennen, wie Sie erwarten, dass die Namen sortiert werden? – SubOptimal

Antwort

0

Das folgende Programm funktioniert, kommt. Es sortiert die Strings mit Sonderzeichen am Anfang.

import java.util.Collections; 
import java.util.Comparator; 
import java.util.LinkedList; 
import java.util.List; 

public class ComparatorDemo { 
    String element; 

    public ComparatorDemo(String element) { 
     this.element = element; 
    } 

    public static void main(String[] args) { 
     List<ComparatorDemo> stringCollection = new LinkedList<>(); 
     stringCollection.add(new ComparatorDemo("abcd")); 
     stringCollection.add(new ComparatorDemo("jklm")); 
     stringCollection.add(new ComparatorDemo("opr")); 
     stringCollection.add(new ComparatorDemo("zabh")); 
     stringCollection.add(new ComparatorDemo("bhuy")); 
     stringCollection.add(new ComparatorDemo("@theh#saj")); 
     stringCollection.add(new ComparatorDemo("*&^%$")); 
     stringCollection.add(new ComparatorDemo("**")); 
     stringCollection.add(new ComparatorDemo("[email protected]#")); 
     stringCollection.add(new ComparatorDemo("@@#$")); 
     stringCollection.add(new ComparatorDemo("#$%$")); 
     stringCollection.add(new ComparatorDemo("%^return")); 
     System.out.println(stringCollection); 
     Comparator<ComparatorDemo> comparator = new Comparator<ComparatorDemo>() { 
      @Override 
      public int compare(ComparatorDemo o1, ComparatorDemo o2) { 
       return o1.element.toUpperCase().compareTo(
         o2.element.toUpperCase()); 
      } 
     }; 
     Collections.sort(stringCollection, comparator); 
     System.out.println(stringCollection); 
    } 

    @Override 
    public String toString() { 
     return "ComparatorDemo [element=" + element + "]"; 
    } 

} 

Output : 
Unsorted List - [ComparatorDemo [element=abcd], ComparatorDemo [element=jklm], ComparatorDemo [element=opr], ComparatorDemo [element=zabh], ComparatorDemo [element=bhuy], ComparatorDemo [[email protected]#saj], ComparatorDemo [element=*&^%$], ComparatorDemo [element=**], ComparatorDemo [[email protected]#], ComparatorDemo [[email protected]@#$], ComparatorDemo [element=#$%$], ComparatorDemo [element=%^return]] 

Sorted List - [ComparatorDemo [[email protected]#], ComparatorDemo [element=#$%$], ComparatorDemo [element=%^return], ComparatorDemo [element=*&^%$], ComparatorDemo [element=**], ComparatorDemo [[email protected]@#$], ComparatorDemo [[email protected]#saj], ComparatorDemo [element=abcd], ComparatorDemo [element=bhuy], ComparatorDemo [element=jklm], ComparatorDemo [element=opr], ComparatorDemo [element=zabh]] 
Verwandte Themen