Java 处理通用密钥的哈希函数
是否可以编写哈希函数来处理泛型键,或者必须指定类型?我正试图为一个存储键及其值的泛型类编写一个哈希表,但开始时遇到了困难 beanStore存储bean对的值 bean对是一个T,N类型的对象,即它有一个T类型的参数和另一个N类型的参数Java 处理通用密钥的哈希函数,java,generics,hash,hash-function,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=numbe
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
}
}
公共类beanStore实现beanFuncs{
私有整数上限;
公共beanStore(整数){cap=number;}
公共int hfunc(T键){
//生成密钥的哈希代码
}
}
这是beanFunc课程
public interface beanFuncs<T,N> extends Iterable<K>{
public boolean hasKey(T key);
.
.
.
public int size();
public Iterator<T> iterator();
}
公共接口beanFuncs扩展了Iterable{
公共布尔hasKey(T-key);
.
.
.
公共整数大小();
公共迭代器迭代器();
}
HashMap
本质上处理泛型。泛型类型可以接受任何对象,因此HashMap
所做的是调用该对象的hashCode()
如果您试图将多种类型的对象分组在一起,可以通过通用边界来处理,也就是说,如果您希望有一个可以获取彼此可比对象的映射,可以通过:HashMap
来实现
在更具体的情况下,您可以将要处理的任何对象集分组,并让它们实现接口或扩展某个超类
长话短说,为泛型类型编写哈希函数是没有意义的,让每个对象处理它们自己的hashcode
。您不能编写泛型散列,因为hashCode()
与equals()
有契约,编写泛型equals()
或hashCode()
——这些方法应该是对象特定的。HashMap
本质上处理泛型。泛型类型可以接受任何对象,因此HashMap
所做的是调用该对象的hashCode()
如果您试图将多种类型的对象分组在一起,可以通过通用边界来处理,也就是说,如果您希望有一个可以获取彼此可比对象的映射,可以通过:HashMap
来实现
在更具体的情况下,您可以将要处理的任何对象集分组,并让它们实现接口或扩展某个超类
长话短说,为泛型类型编写哈希函数是没有意义的,让每个对象处理它们自己的hashcode
。您不能编写泛型散列,因为hashCode()
与equals()
有契约,编写泛型equals()
或hashCode()
——这些方法应该是对象特定的。HashMap
本质上处理泛型。泛型类型可以接受任何对象,因此HashMap
所做的是调用该对象的hashCode()
如果您试图将多种类型的对象分组在一起,可以通过通用边界来处理,也就是说,如果您希望有一个可以获取彼此可比对象的映射,可以通过:HashMap
来实现
在更具体的情况下,您可以将要处理的任何对象集分组,并让它们实现接口或扩展某个超类
长话短说,为泛型类型编写哈希函数是没有意义的,让每个对象处理它们自己的hashcode
。您不能编写泛型散列,因为hashCode()
与equals()
有契约,编写泛型equals()
或hashCode()
——这些方法应该是对象特定的。HashMap
本质上处理泛型。泛型类型可以接受任何对象,因此HashMap
所做的是调用该对象的hashCode()
如果您试图将多种类型的对象分组在一起,可以通过通用边界来处理,也就是说,如果您希望有一个可以获取彼此可比对象的映射,可以通过:HashMap
来实现
在更具体的情况下,您可以将要处理的任何对象集分组,并让它们实现接口或扩展某个超类
长话短说,为泛型类型编写哈希函数是没有意义的,让每个对象处理它们自己的
hashcode
。您不能编写泛型哈希,因为hashCode()
与equals()
有契约关系,编写泛型equals()
或hashCode()没有意义
--这些方法应该是特定于对象的。您可以提供要存储的bean吗?您可以提供要存储的bean吗?您可以提供要存储的bean吗?您可以提供要存储的bean吗?