Usare custom key in Map in Java
Come sappiamo le Map in Java sono delle strutture chiave:valore, dove possiamo stabilire che tipo di dato sono le chiavi e i valori.
In questo articolo facciamo un esempio ci chiave custom.
Sostanzialmente dobbiamo creare una classe che fa l'override di:
- equals
- hashCode
Nell'esempio qui sotto ho messo il codice tutto insieme:
package com.test;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<MyKey, String> map = new HashMap<>();
map.put(new MyKey("key 1"), "val 1");
map.put(new MyKey("key 2"), "val 2");
map.put(new MyKey("key 3"), "val 3");
for (Map.Entry<MyKey, String> entry : map.entrySet()) {
MyKey myKey = entry.getKey();
System.out.println(myKey.getKey() + ":" + entry.getValue());
}
}
}
class MyKey {
private String key;
public MyKey(String key) {
this.key = key;
}
public String getKey() {
return key;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyKey myKey = (MyKey) obj;
return key.equals(myKey.key);
}
@Override
public int hashCode() {
return key.hashCode();
}
}
Enjoy!
java map equals hashcode
Commentami!