Alphabetically then Length Wise Comparator

Sometimes, we would like to sort names alphabetically, followed by length. For example, if we have the following names, the sorting method should sort so that the result is


j
jo
john
james
jonathan
jonathen
gordon
gord
amy

sorted: amy gordon gord jonathan jonathen james john jo j

Solution

    public static final Comparator<String> nameComparator = new Comparator<String>(){
        @Override
        public int compare(String o1, String o2) {
            int len1 = o1.length();
            int len2 = o2.length();
            int lim = Math.min(len1, len2);
            char v1[] = o1.toCharArray();
            char v2[] = o2.toCharArray();

            int k = 0;
            while (k < lim) {
                char c1 = v1[k];
                char c2 = v2[k];
                if (c1 != c2) {
                    if(k >= 1){
                        return len2 - len1;
                    }
                    return c1 - c2;
                }
                k++;
            }
            return len2 - len1;
        }
    };

    public static void main(String[] args){

        ArrayList names = new ArrayList<>();
        names.add("j");
        names.add("jo");
        names.add("john");
        names.add("jonathan");
        names.add("jonathan");
        names.add("james");
        names.add("gordon");
        names.add("gord");
        names.add("amy");

        Collections.sort(names, nameComparator);
    }

Thanks for reading! and let me know if you have any feedback.