首頁  >  問答  >  主體

java - Comparable[] 排序的问题

程序的结构大致如下

class   A {

sort(**Comparable[]  x**){
    //此处进行插入排序等
}

。。。main(String[] args)
{
    String[] arr={......}   //一个字符串数组
    A a=new A();
    a.sort(**arr**);
}
}

1.sort(...)方法需要的参数是一个Comparable数组,而arr是一个字符串数组,为什么可以直接传入arr那?
2.x[i]和a[i]表示同一个元素,为什么那?
3.这样写有什么好处那?

天蓬老师天蓬老师2717 天前863

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 16:17:05

    String實作了Comparable接口,所以每個String物件都可以看作Comparable物件
    你可以看String源碼

    public final class String implements java.io.Serializable, Comparable<String>, CharSequence 
     {
    public int compareTo(String anotherString) 
       {
        int len1 = value.length;
        int len2 = anotherString.value.length;
        int lim = Math.min(len1, len2);
        char v1[] = value;
        char v2[] = anotherString.value;
    
        int k = 0;
        while (k < lim)
         {
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) 
            {
                return c1 - c2;
            }
            k++;
         }
        return len1 - len2;
      }
    }
    

    這個是為了實現多態,舉個例子,A extends B,那麼子類A的任何對像都可以看作是B的對象;
    同理,A implements B,B是一個接口,A的任何對象均可以看作是B的物件。
    這麼寫的好處就是:很多方法不需要再重載。你不需要為每個類別都寫一個sort方法,只要寫一個sort就行了。其他很多方法也不再需要重載。

    回覆
    0
  • 迷茫

    迷茫2017-04-17 16:17:05

    1.String實作了Comparable接口,就可以認為是Comparable類型
    2 3問題沒看懂。 。 。

    回覆
    0
  • 取消回覆