在Java中,要實現一個自定義鍵(key)來用于Hashtable,需要遵循以下步驟:
equals()
和hashCode()
方法。這兩個方法對于Hashtable的鍵來說非常重要,因為它們用于確定兩個鍵是否相等以及為鍵生成一個唯一的哈希值。toString()
方法,以便更好地表示鍵的內容。下面是一個簡單的例子,展示了如何實現一個自定義鍵:
import java.util.Hashtable;
public class CustomKey {
private int id;
private String name;
public CustomKey(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
CustomKey other = (CustomKey) obj;
return id == other.id && (name == null ? other.name == null : name.equals(other.name));
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + id;
result = 31 * result + (name == null ? 0 : name.hashCode());
return result;
}
@Override
public String toString() {
return "CustomKey [id=" + id + ", name=" + name + "]";
}
public static void main(String[] args) {
Hashtable<CustomKey, String> hashtable = new Hashtable<>();
CustomKey key1 = new CustomKey(1, "Alice");
CustomKey key2 = new CustomKey(2, "Bob");
hashtable.put(key1, "Value for Alice");
hashtable.put(key2, "Value for Bob");
System.out.println("Value for key1: " + hashtable.get(key1));
System.out.println("Value for key2: " + hashtable.get(key2));
}
}
在這個例子中,我們創建了一個名為CustomKey
的類,它包含兩個屬性:id
和name
。我們覆蓋了equals()
和hashCode()
方法,以便Hashtable可以正確地處理這些鍵。然后,我們在main()
方法中創建了一個Hashtable,并使用CustomKey
作為鍵來存儲和檢索值。