用于处理通用密钥的哈希函数

时间:2013-12-05 07:59:49

标签: java generics hash hash-function

是否可以编写散列函数来处理通用键,或者是否必须指定类型?我正在尝试为存储密钥及其值的泛型类编写哈希表,但我很难开始。

beanStore存储bean对的值 bean对是T,N类型的对象,即它具有T类型的参数和N类型的另一个参数

public class beanStore<T,N> implements beanFuncs<T,N>{
private Integer cap;

public beanStore(Integer number){cap=number;}

public int hfunc(T key){
//generates hashCode of key 
}

}

这是beanFunc类

public interface beanFuncs<T,N> extends Iterable<K>{
public boolean hasKey(T key);
.
.
.
public int size();
public Iterator<T> iterator();
}

1 个答案:

答案 0 :(得分:3)

HashMap<K,V>固有地处理泛型。泛型类型可以采用任何对象,因此HashMap所做的就是调用该对象的hashCode()

如果您尝试将多种类型的对象组合在一起,您可以通过通用边界处理它,即如果您想要一个可以接受彼此相似的对象的地图,您可以通过以下方式执行此操作:{ {1}}。

在更具体的情况下,您可以将要处理的任何对象集合分组,并让它们实现接口或扩展某些超类。

长话短说,为泛型类型编写哈希函数没有意义,让每个对象处理自己的HashMap<T extends Comparable<T>, K>。您不能编写通用哈希,因为hashCodeshashCode()签有合同,而编写通用equals()equals()则没有意义 - 这些方法应该是特定于对象的。