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?