排序通用数据结构数组

时间:2014-06-05 17:35:20

标签: java arrays sorting generics interface

我有一个包含数组的泛型类。该数组可以是任何数据类型(Double,Integer,String ...),我正在尝试学习如何在构造之后对此数组进行排序。我写了一个排序方法,用于在构造之后对数组进行排序。但是,由于不匹配,java禁止使用mysort方法对通用数组进行排序。

public class SortingTest<E> {

    private E[] array;
    //constructor which creates an object and sorts its array via mysort method.
    public SortingTest(E[] N){
        this.array = N;
        mysort(this.array);
    }
    //sorts array.
    private static<T extends Comparable<T>> void mysort(T[] arr){
        T temp = null;
        //Bubble sort increasing order.
        for(int j=0; j<arr.length; j++){
            for(int i=1; i<arr.length; i++){
                if(arr[i-1].compareTo(arr[i]) > 0 ){
                    temp = arr[i-1];
                    arr[i-1] = arr[i];
                    arr[i] = temp;

                }
            }
        }
    }
}

我该如何克服这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

mysort方法需要通用元素T实现Comparable<T>,但通用E不会声明实现Comparable<E>。将声明更改为:

public class SortingTest<E extends Comparable<? super E>> {
    //rest of your code...
}