Ce que la personne ci-dessus a dit est vrai. La clé est de supprimer les nombres devant la chaîne. Peut-être que vous n'êtes pas familier avec les expressions régulières, j'ai donc écrit une méthode simple pour supprimer les nombres devant la chaîne :
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); } }
Ce que la personne ci-dessus a dit est vrai. La clé est de supprimer les nombres devant la chaîne. Peut-être que vous n'êtes pas familier avec les expressions régulières, j'ai donc écrit une méthode simple pour supprimer les nombres devant la chaîne :
Personnalisez simplement un
Comparator
.