簡體   English   中英

將數組傳遞給JAVA中的方法

[英]Passing an array to a method in JAVA

我對此代碼有疑問。 當我調用sort方法並將一個數組作為參數傳遞給它(sort(array))時,它給我一個錯誤。 有人可以告訴我出什么事了嗎? 謝謝

public class MergeSort {

public static <T extends Comparable<T>> void sort (T[] a) {
    if (a.length <= 1) 
        return;

    int hSize = a.length / 2;

    T[] lTab = (T[])new Comparable[hSize];
    T[] rTab = (T[])new Comparable[a.length-hSize];

    System.arraycopy(a, 0, lTab, 0, hSize);
    System.arraycopy(a, hSize, rTab, 0,a.length-hSize);

    sort(lTab); 
    sort(rTab);
    merge(a, lTab, rTab);
}

private static <T extends Comparable<T>> void merge (T[] a, T[] l, T[] r) {
    int i = 0;  // indexes l
    int j = 0;  // indexes r
    int k = 0;  // indexes a

    while (i < l.length && j < r.length)
        if (l[i].compareTo(r[j]) < 0)
            a[k++] = l[i++];
        else
            a[k++] = r[j++];

    while (i < l.length) 
        a[k++] = l[i++];

    while (j < r.length) 
        a[k++] = r[j++];
    }

}

錯誤是:

method sort in class MergeSort cannot be applied to given types Required T[] Found int[]

您必須確保提供的type確實implements Comparable

看來您傳遞的是int[]而不是Integer[]

您將無法使用基本類型。 對於這些情況,您將必須使用其固有實現Comparable的Wrappers

如果您使用自己的type (即您自己的對象),則該類型must實現Comparable。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM