8

我有Hashtable一个 key ofString和 value as String,但是我已经在我的项目中达到了一个点,我需要能够存储多种不同的数据类型。例如,我需要将intStringDate等全部存储在一个 中Hashtable

4

5 回答 5

7

HashTable或者任何 CollectionMap都可以处理这个,除了int和其他原始类型:你不能存储原始类型,只能存储Object引用。int将需要包装为一个Integer对象。

于 2012-07-19T19:37:05.490 回答
6
Map<String, Object> map = new HashMap<String, Object>() 

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

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

此处提供了对 Hashtable 和 HashMap 之间有什么区别的问题的一个很好的答案。

于 2012-07-19T19:45:54.607 回答
4

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

于 2012-07-19T19:36:54.700 回答
4

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

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

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

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

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

于 2012-07-19T19:50:27.580 回答
0

将您的 HashTable 更改为Hashtable<String, Object>,当您想要存储时,int您需要先将它(或使用自动转换)转换为Integer. 从表中获取值后,您可以if(value instanceof String)根据任何类型确定您的类型,依此类推。

于 2012-07-19T19:40:30.863 回答