Java哈希表

Java哈希表,java,hashtable,key-value,Java,Hashtable,Key Value,我有一个创建哈希表的方法。该方法的签名是 void CreateHashTable(String KeyType,String ValueType) 我想要这样的东西 Hashtable<KeyType,ValueType> hashtable1; 哈希表哈希表1; 这样我就可以根据需要创建哈希表键和值 但是怎么做??我需要数据类型而不是字符串 我认为这是可以理解的 任何帮助都应该非常感激 谢谢您可能想做类似的事情 Class key = Class.forName(Ke

我有一个创建哈希表的方法。该方法的签名是

  void CreateHashTable(String KeyType,String ValueType)
我想要这样的东西

 Hashtable<KeyType,ValueType> hashtable1;
哈希表哈希表1;
这样我就可以根据需要创建哈希表键和值 但是怎么做??我需要数据类型而不是字符串 我认为这是可以理解的

任何帮助都应该非常感激
谢谢

您可能想做类似的事情

Class key = Class.forName(KeyType);
Class value = Class.forName(ValueType);
return new HashTable<key, value>();
Class key=Class.forName(key类型);
Class value=Class.forName(ValueType);
返回新的哈希表();

泛型是一种编译时功能,因此在运行时执行的任何操作(例如按名称查找类)都超出了编译器的判断能力。您必须提供一个类,编译器可以对该类进行判断


顺便说一句:除非必须,否则不要使用哈希表。在Java1.2(1998)中,它被J2SE集合所取代。

如果不需要线程安全性,您将如何处理哈希表(或哈希映射)或其他集合,而您不知道它需要什么类型?在某种程度上,您需要知道集合中有什么才能处理这些值,除非您真正在使用类型无关性寻找类型安全性

如果你知道你想要什么,例如一个
哈希表
,你可以使用Java 7的“”。Josh Bloch的高效Java展示了如何在Java5中做同样的事情。泛型章节的PDF是,搜索要带到示例中的单词“factory”

这两种方法都要求您提前提供所需内容的模板,例如
HashMap
,而不仅仅是单词“String”和“String”。我认为《工厂连锁》描述了你在寻找什么,但这并不容易


我能给你的最好建议是重新考虑你的设计。我很确定你真的不需要做你想做的事。如果你解释了你要解决的问题,也许我们可以想出一个更好的方法。

我想可能不是possible@JanZyka,哈,我没注意到@西蒙·尼克森,我没有机会测试它,我也不确定它是否有效。我想如果有两个字符串输入,就没有办法做到这一点了。Class key=>这是一个类,为什么它会被视为一个类型?你能给我提供一些链接,让我了解集合的基本知识,因为我不熟悉它吗
public static <K,V> HashMap<K,V> create(Class<K> keytype, Class<V> valtype) {
  return new HashMap<K,V>();
}
public static HashMap create(String keyClassName, String valClassName) {
  return create(Class.forName(keyClassName), Class.forName(valClassName));
}