1. 输入待处理的字符数。使用sc.nextInt()的时候,记得要接受他输入的数字后面的换行
  2. 逐一将输入的字符串写入list集合中
  3. 重写list集合的排序规则 (1) 先逐一比较字符串每个字符的大小 (2) 如果都一样,则比较长度 (3) 如果长度相等,返回0,否则返回+1,-1

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int numbers = sc.nextInt();// 数量
            String huanhan = sc.nextLine();
            List<String> list = new ArrayList<>();// 可以重写比较方法,用来排序
            for(int i = 0; i < numbers;i++){
                list.add(sc.nextLine());
            }
            list.sort(new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    // 先一个一个比较字符
                    int index = 0;
                    while(index < o1.length() && index < o2.length()){
                        if(o1.charAt(index) > o2.charAt(index)) return 1;
                        else if(o2.charAt(index) > o1.charAt(index)) return -1;
                        else index++;
                    }
                    if(o1.length() == o2.length()) return 0;// 如果字母和长度都相等,则返回0
                    else return o1.length() > o2.length()? 1 : -1;
                }
            });
            // 输出list集合
            for(String s : list){
                System.out.println(s);
            }
        }
    }
}