import java.util.*;
import java.lang.*;

class Main
{
	public static void main (String[] args) throws java.lang.Exception
	{
		List<String> foo = new ArrayList<String>();
		foo.add("one");
		foo.add("two");
		foo.add("The abc");
		foo.add("THE zzz");
		foo.add("one the");
		
		System.out.println(foo);

		Comparator<String> ignoreLeadingThe = new Comparator<String>() {
		    @Override public int compare(String a, String b) {
		        // TODO check for nulls?
		
		        // (?i) makes the match case-insensitive
		        a = a.replaceAll("(?i)^the\\s+", "");
		        b = b.replaceAll("(?i)^the\\s+", "");
		
		        // TODO use compareToIgnoreCase() instead?
		        return a.compareTo(b);
		    }
		};
		
		Collections.sort(foo, ignoreLeadingThe);
		
		System.out.println(foo);
	}
}