Usare custom key in Map in Java

Mattepuffo's logo
Usare custom key in Map in Java

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!


Condividi

Commentami!