/******************************************************************************
 * Sorting an ArrayList containing fullnames (first last) by lastname part 
 ******************************************************************************/
import java.util.*;

public class BArrayListSort1
{
    public static void main (String[] words) 
    {   
        ArrayList<String> names = new ArrayList<String>();

        names.add("Sam Sultan");
        names.add("George Washington");
        names.add("John Adams");
        names.add("Thomas Jefferson");

        System.out.println("Before the sort");
        System.out.println("---------------");

        for (int i=0; i < names.size(); i++) 
            System.out.println(names.get(i));               //print before sort

        System.out.println();
/*
        Collections.sort(names, (a, b) -> {int start1 = a.indexOf(" ")+1;           //the character after the space
                                      int start2 = b.indexOf(" ")+1;                //the character after the space	
                                      a = a.substring(start1);                      //take the lastname
                                      b = b.substring(start2);                      //take the lastname
                                      return(a.compareToIgnoreCase(b)); }           //if a > b  --> value = positive
                    );
*/                   
        Collections.sort(names, (a, b) -> a.substring(a.indexOf(" ")+1).compareTo(b.substring(b.indexOf(" ")+1)));  //the same, all on 1 line                                  //sort by length of word



        System.out.println("After the sort");
        System.out.println("--------------");

        for (int i=0; i < names.size(); i++) 
            System.out.println(names.get(i));               //print after sort
    }
}