Traté de escribir una función genérica que elimine los elementos duplicados de la matriz.¿Cómo es que el parámetro de tipo genérico dice "extiende" Comparable no "implementa"?
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;
}
Como se puede ver no se puede pasar tipo primitivo como array int [] desde que estoy comparando elementos por() método que se define en la interfaz Comparable compareTo.
me di cuenta de la primera línea (declaración de método):
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
¿Cómo es que se dice que "se extiende comparable"?
Comparable es una interfaz, ¿por qué no es "implementar Comparable"? Esta es la primera vez que escribo una función genérica, así que estoy un poco confundido acerca de esos detalles. (cualquier duda me impediría comprender ...)
EDIT: encontrado este artículo relacionado con este tema.
http://www.tutorialspoint.com/java/java_generics.htm
porque 'implements extends extends' –
Posible duplicado de [Java generics - ¿por qué se permite" extends T "pero no" implementa T "?] (Http://stackoverflow.com/questions/976441/java-generics-why -is-extends-t-allowed-but-not-implements-t) – Lii