dovrei fare equals e hashcode.
la classe penso di averla fatta bene ma ho dei dubbi su questi due metodi, sono corretti?
se non lo sono, doove sbaglio?
cosa prendere in considerazione con equals?
codice:
package agendina;import java.io.*;
import util.*;
import string.*;
import java.util.StringTokenizer;


public class AgendinaVector implements Agendina{
	private Vector<Nominativo> tabella;
	public AgendinaVector(){this(100);}
	
	public AgendinaVector(int n){ //pre: n>0
		tabella=new ArrayVector<Nominativo>(n);
	}
	
	public int size(){return tabella.size();}
	
	public void svuota(){tabella.clear();}
	
	public void aggiungi(Nominativo nm){
		//cerca indice i per inserimento di n in elenco
		int i=0;
		while(i<size() && tabella.get(i).compareTo(nm)<0)
			i++;
		//in caso esiste, sovrascrive
		if(i<size() && tabella.get(i).equals(nm)){
			tabella.set(i,nm);
			return;
			//aggiornamento
		}
		//inserisci nm
		tabella.add(i,nm);
	}
	public void rimuovi(Nominativo nm){
		//ricerca nell'elenco
		int i=Array.ricercaBinaria(tabella,nm);
		if(i==-1) return;
		tabella.remove(i);
	}
	public Nominativo cerca(Nominativo nm){
		int i=Array.ricercaBinaria(tabella, nm);
		if(i==-1) return null;
		return tabella.get(i);
	}
	public Nominativo cerca(String prefisso, String telefono){
		for(int i=0; i<tabella.size(); i++){
			Nominativo nm=tabella.get(i);
			if(nm.getPrefisso().equals(prefisso) && nm.getTelefono().equals(telefono))
				return nm;
		}
		return null;
	}
	public String toString(){
		StringBuilder sb=new StringBuilder(500);
		for(int i=0; i<tabella.size(); i++)
			sb.append(tabella.get(i)+"\n");
		return sb.toString();
	}
	
	public void salva(String nomeFile) throws IOException{
		PrintWriter pw=new PrintWriter(new FileWriter(nomeFile));
		for(int i=0; i<tabella.size(); i++)
			pw.println(tabella.get(i)); //si sfrutta toString nominativo
		pw.close();
	}
	
	public void ripristina(String nomeFile) throws IOException{
		tabella.clear();
		BufferedReader br=new BufferedReader(new FileReader(nomeFile));
		String linea=null;
		StringTokenizer st=null;
		String cog, nom, pre, tel;
		for(;;){
			linea=br.readLine();
			if(linea==null) break;
			st=new StringTokenizer(linea, "-");
			cog=st.nextToken();
			nom=st.nextToken();
			pre=st.nextToken();
			tel=st.nextToken();
			Nominativo n=new Nominativo(cog,nom,pre,tel);
			this.aggiungi(n);
		}
		br.close();
	}
	
	public boolean equals(Object x){
		if(!(x instanceof AgendinaVector))
			return false;
		if(x==this)
			return true;
		AgendinaVector av=(AgendinaVector)x;
		if(this.size()!=av.size())
			return false;
		for(int i=0; i<size(); i++)
			if(tabella.get(i).equals(x))
				return false;
		return true;
	}
	
	public int hashCode(){
		final int MOLT=41;
		int h=0;
		for(int i=0; i<size(); i++)
			h=h*MOLT+tabella.get(i).hashCode();
		return h;
	}


}
grazie mille