有没有办法在一个哈希表变量中存储多种数据类型?

时间:2012-07-19 19:35:13

标签: java

我有一个Hashtable,其密钥为String,值为String,但我已达到项目中我需要能够存储多个的点不同的数据类型。例如,我需要将intStringDate等存储在一个Hashtable中。

5 个答案:

答案 0 :(得分:7)

HashTable或任何集合Map可以处理此问题,但int和其他基本类型除外:您不能存储基本类型,只能存储Object个引用。 int需要包装为Integer对象。

答案 1 :(得分:6)

Map<String, Object> map = new HashMap<String, Object>() 

这为您提供了一个包含String类型键和Object类型值的映射,它基本上是指Object(Date,Integer,String等)类型的任何后代。其他答案正确地指出了这样一个事实,即不使用诸如int,boolean之类的原语,而是需要使用它们的对应物Integer,Boolean等。

此类地图上get操作的返回类型为Object。因此,开发人员有责任正确处理类型信息。

提供了关于Hashtable和HashMap之间区别的问题的一个很好的答案here

答案 2 :(得分:4)

您可以让它存储常规数据类型Object,但不允许使用原始数据类型。

答案 3 :(得分:4)

虽然这是可能的,但通常不是一个好主意。通常情况下,这会导致类型转换异常和问题。

HashTable可以设置为存储通用对象而不是特定类类型,但是检索它们时的类型转换不会自动发生。

为了将对象从集合中取出,必须开发某种形式的类型检查例程。

最好为要存储的每个类类型创建单独的集合。

PS:我还建议使用HashMap而不是HashTable。 HashTable已被弃用。

答案 4 :(得分:0)

将您的HashTable更改为Hashtable<String, Object>,当您想要存储int时,需要先将其(或使用自动广播)投射到Integer。从表中获取值后,您可以按if(value instanceof String)确定类型,依此类推。