/******************************************************************************
 * Sorting incoming strings on the command line using an Arraylist 
 ******************************************************************************/
import java.util.*;

public class BArrayListSort
{
    public static void main (String[] words) 
    {
        if (words.length < 2) {
            System.out.println("Re-execute with at least 2 words");
            System.exit(-1);
        }
        
        ArrayList<String> list = new ArrayList<String>();

        for (int i=0; i < words.length; i++) 
            list.add(words[i]);                         //add to ArrayList

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

        System.out.println(list);                       //print entire ArrayList

        for (int i=0; i < list.size(); i++)             //print each element 
            System.out.println(list.get(i));

        System.out.println();

// ---- choose one of the following ------------------------------------

//      Collections.sort(list);                                 //sort arrayList Asc

//      Collections.sort(list, Collections.reverseOrder());     //sort arrayList Descending

//      Collections.sort(list, String.CASE_INSENSITIVE_ORDER);  //sort arrayList Asc, Not case sensitive

//      Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));  //Desc, Not case sensitive

//      CompareNumAsc sortOrder  = new CompareNumAsc();         //create a comparator object
//      Collections.sort(list, sortOrder);                      //sort arrayList Asc, Numerically

//      CompareNumDesc sortOrder  = new CompareNumDesc();       //create a comparator object
//      Collections.sort(list, sortOrder);                      //sort arrayList Asc, Numerically

        CompareLast3Char sortOrder  = new CompareLast3Char();   //create a comparator object
        Collections.sort(list, sortOrder);                      //sort arrayList Asc by last 3 characters
// ---------------------------------------------------------------------

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

        System.out.println(list);                       //print entire ArrayList

        for (int i=0; i < list.size(); i++)             //print each element 
            System.out.println(list.get(i));

        System.out.println();
        
    }
}