Now you can use this method sort when you have a List Object and want sort this.
If you only call the sort() such “myList.sort()” the list will be sort by ascendant (A – Z). Also to define other way to sort you can use a parameter, you can implement your comparator.
Example :
@Test
public void myMethod(){
List<String> words = new ArrayList<String>();
words.add("xxxxxxxlargesize");
words.add("small");
words.add("mediumsize");
Comparator myComparator = new MyComparator();
words.sort(myComparator); // Order by myComparator
words.forEach(new Consumer<String>(){
public void accept(String w) {
System.out.println(w);
}
});
}
// * @return a negative integer, zero, or a positive integer as the
// * first argument is less than, equal to, or greater than the
// * second.
public class MyComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
if(s1.length() < s2.length())
return -1;
if(s1.length() > s2.length())
return 1;
return 0;
}
}
For you now more look the new method in List Class:
@SuppressWarnings({"unchecked", "rawtypes"})
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
*** Important, the default methods are new too. But this is subject for other post 😛
Now the same code but better 😛 With lambdas
public void myMethod(){
List<String> words = new ArrayList<String>();
words.add("xxxxxxxlargesize");
words.add("small");
words.add("mediumsize");
words.sort((s1, s2) -> Integer.compare(s1.length(),s2.length()));
words.forEach(s -> System.out.println(s));
}
You can use to :
words.sort(Comparator.comparing(s -> s.length()));