可以同时使用数组和arraylists的通用方法

时间:2014-01-07 15:02:04

标签: java sorting generics

我正在尝试编写一个适用于数组和arraylists的泛型mergesort方法,但我不确定这是否可行,因为这两个结构有不同的方法/语法来添加/检索元素。

2 个答案:

答案 0 :(得分:3)

我只是编写方法来获取列表,然后编写第二个接受数组的方法,该方法委托给第一个方法。如果使用Arrays.asList,则对List所做的任何更改都应写入原始数组。

public  <T> void mergeSort(T array []) {
    mergeSort(Arrays.asList(array));
}

public <T> void mergeSort(List<T> list) {
    // do sort here
}

答案 1 :(得分:2)

你不能编写一个特定的方法来对这两种方法进行完全相同的排序,但你可以编写一个重载并委托给另一个的方法:

public void mergeSort(List<Integer> list) {
    Integer[] arr = list.toArray(new Integer[list.size()]);
    mergeSort(arr);
    list.clear();
    for(int num : arr) {
        list.add(num);
    }
}

public void mergeSort(Integer[] arr) {
    //Actual sorting logic
}

你不能用一种方法做到这一点,除非你告诉它接受Object并且如果它是错误的类型则开始抛出异常,这显然不是goo练习!