Apa yang dikatakan oleh orang di atas adalah betul. Kuncinya ialah membuang nombor di hadapan rentetan Mungkin anda tidak biasa dengan ungkapan biasa, jadi saya menulis kaedah mudah untuk mengeluarkan nombor di hadapan rentetan:
import java.util.*; public class Main { // 取出字符串前面的数字 public static String getStartDigits(String str) { int len = str.length(); int stopPos = 0; for (int i = 0; i < len; i++) { // 遍历 str 的字符 char ch = str.charAt(i); if (!(ch >= '0' && ch <= '9')) { // 如果当前字符不是数字 stopPos = i; break; } } return str.substring(0, stopPos); } public static void sortByStartDigits(List list) { Collections.sort(list, new Comparator() { @Override public int compare(String s1, String s2) { int num1 = Integer.parseInt(getStartDigits(s1)); int num2 = Integer.parseInt(getStartDigits(s2)); return num1 - num2; } }); } public static void main(String[] args) throws Exception { List list = Arrays.asList( "1号摄像机", "10号摄像机", "2号摄像机", "20号摄像机", "30号摄像机", "31号摄像机"); System.out.println("排序前:"); System.out.println(list); sortByStartDigits(list); System.out.println("排序后:"); System.out.println(list); } }
Apa yang dikatakan oleh orang di atas adalah betul. Kuncinya ialah membuang nombor di hadapan rentetan Mungkin anda tidak biasa dengan ungkapan biasa, jadi saya menulis kaedah mudah untuk mengeluarkan nombor di hadapan rentetan:
Hanya sesuaikan
Comparator
.