<分区>
我尝试编写从数组中删除重复元素的通用函数。
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
//do quicksort
Arrays.sort(arr);
ArrayList<E> list = new ArrayList<E>();
int i;
for(i=0; i<arr.length-1; i++) {
if(arr[i].compareTo(arr[i+1]) != 0) { //if not duplicate, add to the list
list.add(arr[i]);
}
}
list.add(arr[i]); //add last element
return list;
}
如您所见,您不能传递像 int[] 数组这样的原始类型,因为我正在通过 Comparable 接口(interface)中定义的 compareTo() 方法比较元素。
我注意到第一行(方法声明):
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
为什么说“扩展可比较”?
Comparable 是一个接口(interface),为什么不“实现 Comparable”呢?这是我第一次编写通用函数,所以我对这些细节有点困惑。 (任何疑惑都会阻止我理解..)
编辑:找到与此主题相关的这篇文章。