KeyVal.java
package eu.javaexperience.collection.map;
import java.io.Serializable;
import java.util.Map.Entry;
import eu.javaexperience.reflect.Mirror;
public class KeyVal<K,V> implements Entry<K, V>, Serializable
{
private static final long serialVersionUID = 1L;
public static KeyVal[] emptyArrayInstance = new KeyVal[0];
K k;
V v;
private transient volatile int hash = 0;
public KeyVal(K k,V v)
{
this.k = k;
this.v = v;
}
public KeyVal(Entry<K, V> kv)
{
this(kv.getKey(), kv.getValue());
}
public KeyVal<K,V> clone()
{
return new KeyVal<K, V>(k, v);
}
public String toString()
{
return "{\""+k+"\":\""+v+"\"}";
}
@Override
public K getKey()
{
return k;
}
public K setKey(K arg0)
{
K old = k;
hash = 0;
k = arg0;
return old;
}
@Override
public V getValue()
{
return v;
}
@Override
public V setValue(V arg0)
{
hash = 0;
V old = v;
v = arg0;
return old;
}
public boolean isYourKeyValPar(K key,V val)
{
if(this.k != null)
if(!k.equals(key))
return false;
if(this.v != null)
if(!v.equals(val))
return false;
return true;
}
public boolean equals(Object o)
{
if(!(o instanceof Entry))
return false;
if(o == this)
return true;
Entry test = (Entry) o;
return Mirror.equals(k, test.getKey()) && Mirror.equals(v, test.getValue());
}
public boolean isKeyEquals(Object key)
{
if(key == k)
return true;
if(k != null)
return k.equals(key);
return false;
}
public boolean isValueEquals(Object value)
{
if(value == v)
return true;
if(v != null)
return v.equals(value);
return false;
}
@Override
public int hashCode()
{
int ret = hash;
if(ret == 0)
{
ret = 17;
if(k != null)
ret = 31 * ret + k.hashCode();
if(v != null)
ret = 31 * ret +v.hashCode();
hash = ret;
}
return ret;
}
public static void main(String[] arssdfsdfsf)
{
KeyVal<String,String> nullnull = new KeyVal<String, String>(null, null);
KeyVal<String,String> anullnull = new KeyVal<String, String>(null, null);
KeyVal<String, String> fullfull = new KeyVal<String, String>("a","b");
KeyVal<String, String> ffullfull = new KeyVal<String, String>("a","b");
KeyVal<String, String> afullfull = new KeyVal<String, String>("a","c");
KeyVal<String, String> a = new KeyVal<String, String>("alkatresz","jfet");
KeyVal<String, String> b = new KeyVal<String, String>("alkatresz","jfet");
System.out.println
(
nullnull.equals(nullnull)+"\n"+
nullnull.equals(anullnull)+"\n"+
anullnull.equals(nullnull)+"\n"+
nullnull.equals(fullfull)+"\n"+
fullfull.equals(fullfull)+"\n"+
ffullfull.equals(ffullfull)+"\n"+
fullfull.equals(ffullfull)+"\n"+
a.equals(b)+"\n"+
b.equals(a)+"\n"+
"Vágás\n"+
nullnull.equals(fullfull)+"\n"+
fullfull.equals(nullnull)+"\n"+
fullfull.equals(afullfull)
);
}
}