1

sort インターフェイスを使用して任意のタイプのデータをソートできる単純な関数を作成しようとしていComparableます。私はそれをやったと思いますが、特定の型の配列を引数として渡すのに問題があります。コードは

public class Main {
    public static void main(String[] args) {
        int[] arr= {12,14,11,6};
            // The above gives error
            // But this works : Comparable[] arr= {12,14,11,6};
        Comparable b[]= Selection.sort(arr);
        for (Comparable x:b)
            System.out.println(x);
    }
}

問題は何ですか? エラーは次のとおりです。Comparable is a raw type. References to generic type Comparable<T> shoulb be parameterized.

より明確にするために、残りのコードは次のとおりです。

public class Selection {

    public static Comparable[] sort(Comparable[] a){
        int N= a.length;

        for(int i=0;i<N;i++){
            int min=i;
            for(int j=i+1;j<N;j++)
                if(less(a[j],a[min]))
                    min=j;

            exch(a,i,min);
        }
        return a;
    }

    // Other methods defined here
}
4

1 に答える 1

3

それらが同等である場合は、車輪を再発明しないでください!

Arrays.sort(b);

メソッドでラップできます:

public static Comparable[] sort(Comparable[] a){
    Arrays.sort(a);
    return a;
}

しかし、あなたは何の価値も追加していません。Arrays.sort(array);必要なところだけ使用してください。


元の配列を保持したい場合は、最初にコピーを作成し、Arraysユーティリティ クラスも使用します。

Comparable[] sorted = Arrays.copyOf(array);
Arrays.sort(sorted);
于 2013-05-17T05:14:30.903 に答える