解决方案 »

  1.   

    想死的心都有了;用compareTo() 冒泡排了一下和sort结果一样;windows 这按名称 递增  到底 什么排序方式啊?
      

  2.   

    需要写一个比较器实现windows的排序算法,具体不清楚,但大概应该是这个样子的import java.util.Comparator;
    public class NumberComparator<T extends String> implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
    String str1 = (String) o1, str2 = (String) o2;
    char[] arr1 = str1.toCharArray();
    char[] arr2 = str2.toCharArray();
    int len1 = arr1.length, len2 = arr2.length;
    int len = len1 < len2 ? len1 : len2;
    int diff = 0;
    boolean allIs=false;
    for (int i = 0; i < len; i++) {
    boolean is1 = isDigit(arr1[i]);
    boolean is2 = isDigit(arr2[i]);
    if (diff == 0) {
    diff = arr1[i] - arr2[i];
    }
    if (!is1 && !is2) {
    if (diff != 0) {
    return diff;
    }
    allIs=false;
    } else if (is1 && is2) {
    allIs=true;
    } else if (is1) {
    if (allIs) {
    return 1;
    }
    return diff;
    } else if (is2) {
    if (allIs) {
    return -1;
    }
    return diff;
    }
    }
    if (allIs) {
    if (len1==len2) {
    return diff;
    }
    return len1 - len2;
    }
    return diff;
    } private boolean isDigit(char c) {
    return c>='0'&&c<='9';
    }
    }然后 List<String> list=Arrays.asList(pics);
    list.sort(new NumberComparator<String>());
    for (String f : list) {
    System.out.println(f);
    }