Olá pessoal, sou novo aqui no forum e logo de cara gostaria da ajuda de vocês.
Ainda estou aprendendo a usar Generics, então estou me batendo um pouco, alguem poderia me dar uma ajuda?
import java.io.Serializable;
public class ListaSeqOrd<E> extends ListaSeq implements Serializable{
private E[] lista;
private int numElementos;
public ListaSeqOrd() {
super();
}
public ListaSeqOrd(int tamanhoInicial, int incremento) {
super(tamanhoInicial, incremento);
}
public ListaSeqOrd(int tamanhoInicial) {
super(tamanhoInicial);
}
protected int findPosition(Comparable<E> obj){
int inicio, fim, meio, c;
inicio = 0;
fim = numElementos-1;
while (inicio <= fim){
meio = (inicio + fim)/2;
c = obj.compareTo(lista[meio]);
if (c == 0)
return meio;
if (c > 0)
inicio = meio + 1;
else
fim = meio - 1;
}
return -1;
}
public void delete(Comparable<E> obj){
int posicao = findPosition(obj);
if (posicao >= 0){
for (int i = posicao; i < (numElementos-1); i++) {
lista[i] = lista[i+1];
}
numElementos--;
lista[numElementos] = null;
}
}
public void insert(Comparable<E> obj){
redimensione();
int posicao = findPositionInsert(obj);
numElementos++;
for (int i = numElementos - 1; i > posicao; i--) {
lista[i] = lista[i-1];
}
lista[posicao] = obj; //Aqui esta dando o erro:" Type mismatch: cannot convert from Comparable<E> to E "
}
private int findPositionInsert(Comparable<E> obj){
int inicio, fim, meio, c;
inicio = 0;
fim = numElementos-1;
while (inicio <= fim){
meio = (inicio + fim)/2;
c = obj.compareTo(lista[meio]);
if (c > 0)
inicio = meio + 1;
else
fim = meio - 1;
}
return inicio;
}
}
Que tem como superclasse:
import java.io.Serializable;
public class ListaSeq<E> implements Serializable {
private E[] lista;
private int numElementos;
private int incremento;
private int corrente;
public ListaSeq(){
numElementos = 0;
incremento = 10;
lista = (E[]) new Object[10];
}
public ListaSeq(int tamanhoInicial){
numElementos = 0;
incremento = 10;
lista =(E[]) new Object[tamanhoInicial];
}
public ListaSeq(int tamanhoInicial,int incremento){
numElementos = 0;
this.incremento = incremento;
lista = (E[]) new Object[tamanhoInicial];
}
protected void redimensione(){
if (numElementos == lista.length){
Object[] novoVetor = new Object[numElementos +
incremento];
System.arraycopy(lista, 0, novoVetor, 0, numElementos);
lista =(E[]) novoVetor;
}
}
private int findPosition(Comparable<E> obj){
for (int i = 0; i < numElementos; i++) {
if (obj.compareTo(lista[i]) == 0)
return i;
}
return -1;
}
public void insert(E obj){
redimensione();
lista[numElementos] = obj;
numElementos++;
}
public boolean delete(Comparable<E> obj){
int posicao = findPosition(obj);
if (posicao >= 0){
for (int i = posicao; i < (numElementos-1); i++) {
lista[i] = lista[i+1];
}
numElementos--;
lista[numElementos] = null;
return true;
}
return false;
}
public boolean isThere(Comparable<E> obj){
return (findPosition(obj) >= 0);
}
public E retrieve(Comparable<E> obj){
int posicao = findPosition(obj);
if (posicao >= 0)
return lista[posicao];
else
return null;
}
public int length(){
return numElementos;
}
public Object getFirst(){
if (numElementos == 0)
return null;
else{
corrente = 0;
return lista[0];
}
}
public Object getNext(){
if (corrente == numElementos-1)
return null;
else
return lista[++corrente];
}
}

