hm....: alle gleichen String[] sollen gleichen hashcode bekommen....

Beitrag lesen

so, jetzt ist der hashcode bei beiden vectoren gleich (hab ich mir ausgeben lassen)

code:

  
  
package persistentGraph;  
  
import java.util.HashMap;  
  
import controller.Controller;  
  
public class Vector {  
  
	public String[] el;  
	public boolean n;  
	  
	  
	public Vector( String[] el, boolean n)  
	{  
		this.el = new String[el.length];  
		  
		for(int i=0; i<el.length; i++)  
			this.el[i] = el[i];  
		  
		this.n = n;  
		  
				  
		  
		  
	}  
	  
	private String getKey(String[] e)  
	{  
		String key = "";  
		  
		for(int i=0; i<e.length-1; i++)  
			key += String.valueOf(e[i]) + ";";  
		  
		key += String.valueOf(e[e.length-1]);  
		  
		return key;  
	}  
	  
	@Override  
	public boolean equals(Object obj)  
	{  
		Vector vec = (Vector) obj;  
		  
		for(int i=0; i<vec.el.length; i++)  
		{  
			if(vec.el[i]!=this.el[i])  
				return false;  
		}  
		  
		if(this.n != vec.n)  
			return false;  
		  
		return true;		  
	}  
	  
	@Override  
	public int hashCode()  
	{  
		String key = getKey(this.el);  
		  
		if(n)  
		{  
			if(!Controller.code2.get(1).containsKey(key))  
			{  
				Controller.k_++;  
				Controller.code2.get(1).put(key, Controller.k_);  
			}  
		}  
		else  
		{  
			if(!Controller.code2.get(0).containsKey(key))  
			{  
				Controller.k_++;  
				Controller.code2.get(0).put(key, Controller.k_);  
			}  
		}  
		if(this.n)  
			return Controller.code2.get(1).get(getKey(this.el));  
		else  
			return Controller.code2.get(0).get(getKey(this.el));  
	}  
}  
  

aber trotzdem frisst er meine hashMap<Vector,Integer> nur einen der vectoren, nicht beide.

muss ich neben hashcode und equals noch irgendwas beachten?