是否可以编写散列函数来处理通用键,或者是否必须指定类型?我正在尝试为存储密钥及其值的泛型类编写哈希表,但我很难开始。
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();
}
答案 0 :(得分:3)
HashMap<K,V>
固有地处理泛型。泛型类型可以采用任何对象,因此HashMap
所做的就是调用该对象的hashCode()
。
如果您尝试将多种类型的对象组合在一起,您可以通过通用边界处理它,即如果您想要一个可以接受彼此相似的对象的地图,您可以通过以下方式执行此操作:{ {1}}。
在更具体的情况下,您可以将要处理的任何对象集合分组,并让它们实现接口或扩展某些超类。
长话短说,为泛型类型编写哈希函数没有意义,让每个对象处理自己的HashMap<T extends Comparable<T>, K>
。您不能编写通用哈希,因为hashCodes
与hashCode()
签有合同,而编写通用equals()
或equals()
则没有意义 - 这些方法应该是特定于对象的。