我正在尝试编写一个适用于数组和arraylists的泛型mergesort方法,但我不确定这是否可行,因为这两个结构有不同的方法/语法来添加/检索元素。
答案 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练习!