DL1997 2017-04-20 04:23 采纳率: 33.3%
浏览 787
已采纳

无报错,但是为什么排序没对??不应该是【abcd,abc,def,a】吗。。

public class StringCmp implements Comparator{
public int compare(String e1,String e2){
int len1 = e1.length();
int len2 = e2.length();

    return len1-len2;
}

}

public static void sort(Object[] arr,Comparator cmp){
boolean sorted = true;//假定有序

    for(int i=0;i<arr.length-1;i++ ){

        for(int j=i+1;j<arr.length/*减少次数*/-i-1;j++){

            if(cmp.compare(arr[i], arr[i+1])<0){
                Object temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
                sorted = false;
            }
        }
        if(sorted){ //假定成功跳出,减少趟数
            break;
        }
    }
    //System.out.println(Arrays.toString(arr));
}

public class DemoString {
public static void main(String args[]){
    //按照长度进行比较
    String   arr = new String[]{"a","abcd","abc","def"};
    util.sort(arr, new StringCmp());
    System.out.println(Arrays.toString(arr));

}

}
输出
[abcd, a, abc, def]

  • 写回答

4条回答 默认 最新

  • hongyu83916 2017-04-20 05:01
    关注

    实现了 Comparator ,是要重写compare方法。可是你的重写标记怎么没呢?比较器

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?