Sorting ArrayList with Lambda in Java 8
Use list.sort(String::compareToIgnoreCase)
Using list.sort(String::compareTo)
or list.sort(Comparator.naturalOrder())
will give incorrect (ie. non-alphabetical) results. It will sort any upper case letter before all lower case letters, so the array ["aAAA","Zzz", "zzz"]
gets sorted to ["Zzz", "aAAA", "zzz"]
Are you just sorting String
s? If so, you don't need lambdas; there's no point. You just do
import static java.util.Comparator.*;
list.sort(naturalOrder());
...though if you're sorting objects with a String
field, then it makes somewhat more sense:
list.sort(comparing(Foo::getString));
Suppose you have List of names(String) which you want to sort alphabetically.
List<String> result = names.stream().sorted(
Comparator.comparing(n->n.toString())).collect(Collectors.toList());
its working perfectly.
For strings this would work
arrayList.sort((p1, p2) -> p1.compareTo(p2));