Salve a tutti ragazzi.
Allora:

Io ho la seguente interfaccia :

codice:

public interface CollezioneOrdinata<E extends Comparable<? super E>> extends Iterable<E> {
	
	int size();
	void aggiungi(E elem);
	boolean rimuovi(E elem);
	boolean rimuoviIntervallo(E min, E max);
	boolean rimuovi(CollezioneOrdinata<E> c);
	boolean rimuoviIntervallo(CollezioneOrdinata<E> c, E min, E max);
	void aggiungi(CollezioneOrdinata<E> c);
	void aggiungiIntervallo(CollezioneOrdinata<E> l, E min, E max);
	CollezioneOrdinata<E> intervallo(E min, E max);

}
Ho creato una classe CollezioneOrdAstratta che implementa l'interfaccia.
Ho concretizzato il metodo rimuovi(E elem) che rimuove dalla collezione l'elemento ricevuto come parametro e nel caso non sia presente restituisce false.

codice:
@Override
	public boolean rimuovi(E elem){
		int count=0;
		Iterator<E> it = this.iterator();
		while(it.hasNext()){
			E elm = it.next();
			if(!elm.equals(elem)) continue;
			it.remove();
			count++;
		}
		return count>0;
		
	}//RIMUOVI
Tralasciando gli altri metodi , L'esercizio mi dice di definire esplicitamente il metodo equals.
Ora siccome ho utilizzato il metodo equals nel metodo rimuovi per confrontare i due elementi ; volevo sapere se ho scritto correttamente l'equals

codice:
@Override
	public boolean equals(Object o){
		if(o==this) return true;
		if(o==null) return false;
		if(!(o instanceof CollezioneOrdAstratta)) return false;
		E elem = (E)o;
		return this.equals(elem);
		
	}