0

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

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();
}
4

1 回答 1

3

HashMap<K,V>本质上处理泛型。泛型类型可以接受任何对象,所以HashMap调用该对象的hashCode().

如果您尝试将多种类型的对象组合在一起,您可以通过通用边界来处理,即如果您想要一个可以获取彼此可比较的对象的地图,您可以通过:HashMap<T extends Comparable<T>, K>.

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

长话短说,为泛型类型编写散列函数是没有意义的,让每个对象处理自己的hashCodes. 您不能编写通用哈希,因为hashCode()与 有合同,并且编写通用或--这些方法应该是特定于对象的方法equals()是没有意义的。equals()hashCode()

于 2013-12-05T08:02:48.897 回答