我有Hashtable
一个 key ofString
和 value as String
,但是我已经在我的项目中达到了一个点,我需要能够存储多种不同的数据类型。例如,我需要将int
、String
、Date
等全部存储在一个 中Hashtable
。
5 回答
HashTable
或者任何 CollectionMap
都可以处理这个,除了int
和其他原始类型:你不能存储原始类型,只能存储Object
引用。int
将需要包装为一个Integer
对象。
Map<String, Object> map = new HashMap<String, Object>()
这为您提供了一个包含 String 类型的键和 Object 类型的值的映射,这基本上意味着 Object 类型的任何后代(日期、整数、字符串等)。其他答案正确地指出了这样一个事实,即不需要使用诸如 int、boolean 之类的原语,而是需要使用它们的对应物 Integer、Boolean 等。
get
这种地图上操作的返回类型是Object
. 因此,正确处理类型信息是开发人员的责任。
此处提供了对 Hashtable 和 HashMap 之间有什么区别的问题的一个很好的答案。
您可以让它存储通用数据类型Object
,但不允许原始数据类型。
虽然这是可能的,但这通常不是一个好主意。这通常会导致类型转换异常和问题。
HashTable 可以设置为存储通用对象而不是特定的类类型,但是检索它们时的类型转换不会自动发生。
为了从集合中取回对象,必须开发某种形式的类型检查例程。
您最好为要存储的每个类类型创建一个单独的集合。
PS:我还建议使用 HashMap 而不是 HashTable。HashTable 已被弃用。
将您的 HashTable 更改为Hashtable<String, Object>
,当您想要存储时,int
您需要先将它(或使用自动转换)转换为Integer
. 从表中获取值后,您可以if(value instanceof String)
根据任何类型确定您的类型,依此类推。