Ordinamento dell’arrayista in ordine alfabetico (senza distinzione tra maiuscole e minuscole)

Ho un names arraylist stringa che contiene nomi di persone. Voglio ordinare l’arraylist in ordine alfabetico.

 ArrayList names = new ArrayList(); names.add("seetha"); names.add("sudhin"); names.add("Swetha"); names.add("Neethu"); names.add("ananya"); names.add("Athira"); names.add("bala"); names.add("Tony"); names.add("Karthika"); names.add("Nithin"); names.add("Vinod"); names.add("jeena"); Collections.sort(names); for(int i=0; i<names.size(); i++) System.out.println(names.get(i)); 

Ho provato a ordinare la lista in modo sopra. Ma sta visualizzando l’array ordinato come:

 Athira Karthika .. .. ananya bala ... 

ma non voglio renderlo case sensitive. Voglio il risultato come:

 ananya Athira bala 

    Il Comparator personalizzato dovrebbe aiutare

     Collections.sort(list, new Comparator() { @Override public int compare(String s1, String s2) { return s1.compareToIgnoreCase(s2); } }); 

    O se stai usando Java 8:

     list.sort(String::compareToIgnoreCase); 

    La cosa più semplice da fare è:

     Collections.sort(list, String.CASE_INSENSITIVE_ORDER); 

    prova questo codice

     Collections.sort(yourarraylist, new SortBasedOnName()); import java.util.Comparator; import com.RealHelp.objects.FBFriends_Obj; import com.RealHelp.ui.importFBContacts; public class SortBasedOnName implements Comparator { public int compare(Object o1, Object o2) { FBFriends_Obj dd1 = (FBFriends_Obj)o1;// where FBFriends_Obj is your object class FBFriends_Obj dd2 = (FBFriends_Obj)o2; return dd1.uname.compareToIgnoreCase(dd2.uname);//where uname is field name } } 

    Sulla base delle risposte di cui sopra, sono riuscito a confrontare i miei oggetti di class personalizzati in questo modo:

     ArrayList itemList = new ArrayList<>(); ... Collections.sort(itemList, new Comparator() { @Override public int compare(Item item, Item t1) { String s1 = item.getTitle(); String s2 = t1.getTitle(); return s1.compareToIgnoreCase(s2); } }); 

    È necessario utilizzare un comparatore personalizzato che utilizzerà compareToIgnoreCase , non confrontaTo.

    A partire da Java 8 è ansible utilizzare Stream :

     List sorted = Arrays.asList( names.stream().sorted( (s1, s2) -> s1.compareToIgnoreCase(s2) ).toArray(String[]::new) ); 

    Ottiene un stream da tale ArrayList , quindi lo ordina (ignorando il caso). Successivamente, lo stream viene convertito in un array che viene convertito in ArrayList .

    Se si stampa il risultato usando:

     System.out.println(sorted); 

    ottieni il seguente risultato:

     [ananya, Athira, bala, jeena, Karthika, Neethu, Nithin, seetha, sudhin, Swetha, Tony, Vinod]