java中如何对以数字开头的字符串集合进行排序
天蓬老师
天蓬老师 2017-04-18 10:36:59
0
2
545
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen (2)
Ty80

楼上说的很对,关键是要取出字符串前面的数字,可能你目前对正则并不熟悉,所以我写个简单的取出字符串前面数字的方法:

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); } }

    PHPzhong

    自定义一个Comparator就可以了。

    String[] arr = {"1号","2号","3号","11号","21号","12号","13号","100号"}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); List list = Arrays.asList(arr); Collections.sort(list,new Comparator() { @Override public int compare(String o1, String o2) { return Integer.parseInt(o1.replaceAll("[^0-9]*", "")) - Integer.parseInt(o2.replaceAll("[^0-9]*", "")); } }); System.out.println(list);
      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!