Operatori di confronto < non definito

di il
1 risposte

Operatori di confronto < non definito

Salve a tutti ho iniziato da poco a programmare in Java e stavo smanettando con le liste linkate ordinate in ordine crescente e dopo che ho definito il metodo inserimento la console mi segnala questo errore:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator < is undefined for the argument type(s) H, H

l'errore mi è stato segnalato nel confronto iter.getElement() < x

Qui c'è il codice con la procedura di inserimento della lista

public class ListaOrdinata<H> extends Lista<H> {
	public ListaOrdinata<H> insert(H x){
		
		if(isEmpty())
			head=tail=new Node<H>(x);
		else{
			Node<H> nuovo = new Node<H>(x);
			iter=head;
			while((iter != null) && (iter.getElement() < x))
				iter=iter.getNext();
			
			if(iter==head){
				head.setPrevious(nuovo);
				nuovo.setNext(head);
				head=nuovo;
			}
			else if(iter==tail){
				tail.setNext(nuovo);
				nuovo.setPrevious(tail);
				tail=nuovo;
			}
			else{
				iter.setPrevious(nuovo);
				iter.getPrevious().setNext(nuovo);
				nuovo.getPrevious().setNext(iter.getPrevious());
				nuovo.setNext(iter);
			}
		}
		return this;
	}
}
la classe di base:

public class Lista<H>{
	Lista(){
		head=tail=iter=null;
	}
	public Lista<H> insert(H x){
		iter=new Node<H>(x);
		if(isEmpty())
			tail=new Node<H>(x);
		else{
			head.setPrevious(iter);
			iter.setNext(head);
		}
		head=iter;
		return this;
	}
	public Lista<H> delete(H x){
		if(!isEmpty()){
			Node<H> z = search(x);
			if(z!=null){
				if(z==head){
					head=head.getNext();
					head.setPrevious(null);
				}
				else if(z==tail){
					tail=tail.getPrevious();
					tail.setNext(null);
				}
				else{
					z.getPrevious().setNext(z.getNext());
					z.getNext().setPrevious(z.getPrevious());
				}
			}
			else
				System.out.println("Elemento inesistente");
		}
		else
			System.out.println("Lista vuota!");
		
		return this;
	}
	public void print(){
		iter=head;
		while(iter != null){
			System.out.print(iter.getElement());
			System.out.print(" ");
			iter=iter.getNext();
		}
		System.out.println();
	}
	protected Node<H> search(H x){
		iter=head;
		while(iter!=null && iter.getElement() != x)
			iter=iter.getNext();
		return iter;
	}
	protected boolean isEmpty(){return head==null?true:false;}
	protected Node<H> head, tail, iter;
}

e la classe del nodo:

public class Node<H>{
	public Node(){}
	public Node(H x){
		element = x;
		previous=next=null;
	}
	public Node<H> getPrevious(){return previous;}
	public Node<H> getNext(){return next;}
	public H getElement(){return element;}
	public void setPrevious(Node<H> p){previous=p;}
	public void setNext(Node<H> p){next=p;}
	public void setElement(H x){element=x;}
	
	private Node<H> previous, next;
	private H element;
}
	
come posso risolvere questo problema?

grazie in anticipo

1 Risposte

  • Re: Operatori di confronto < non definito

    LeoNerd ha scritto:


    l'errore mi è stato segnalato nel confronto iter.getElement() < x
    come posso risolvere questo problema?
    Gli oggetti non si confrontano per minore/maggiore/uguale con gli operatori relazionali ( > < <= ecc..)
    L'approccio realizzato nel framework è quello di descrivere/astrarre il criterio di comparazione tra due oggetti tramite due interfacce: Comparable e Comparator. Approfondisci.
Devi accedere o registrarti per scrivere nel forum
1 risposte