public static void bilibiliFun2(List list) { list.sort(new Com()); StringBuffer sb = new StringBuffer(); for (int i = 0; i < list.size(); i++) { sb.append(list.get(i)); } System.out.println(sb.toString()); } static class Com implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { int a = Integer.valueOf(String.valueOf(o1).charAt(0)); int b = Integer.valueOf(String.valueOf(o2).charAt(0)); int i = 1; while (a == b) { if (String.valueOf(o1).length() > i && String.valueOf(o2).length() > i) { a = Integer.valueOf(String.valueOf(o1).charAt(i)); b = Integer.valueOf(String.valueOf(o2).charAt(i)); } else { if (String.valueOf(o1).length() < String.valueOf(o2).length() && Integer.valueOf(String.valueOf(o1).charAt(0)) < Integer.valueOf(String.valueOf(o2).charAt(String.valueOf(o2).length() - 1))) { return -1; } else if (String.valueOf(o1).length() > String.valueOf(o2).length() && Integer.valueOf(String.valueOf(o2).charAt(0)) > Integer.valueOf(String.valueOf(o1).charAt(String.valueOf(o1).length() - 1))) { return -1; } else { return 1; } } i++; } return a - b; } }