我有一个Hashtable
其中有一个密钥String
和价值String
,但我已经达到了我的项目中,我需要能够存储多个不同的数据类型的一个点。例如,我需要将int
,String
,Date
等全部存储在一个Hashtable
中。有没有办法将多个数据类型存储在单个散列表变量中?
回答
HashTable
或任何收藏Map
可以解决这个问题,除了int
和其他原始类型:您不能储存基本类型,只有Object
引用。需要将int
包装为Integer
对象。
那么我能否将它作为它存储的数据类型来检索? – samwell 2012-07-19 19:41:45
不是真的,不 - 不是 - 没有演员阵容,它仍然是挑剔的。对于不同的类型,使用不同的地图会更好 - 或者更好 - 只需创建一个带有每个不同名称的字段的类,而不是有一个'Map',您希望您确信一切正确的类型。 – 2012-07-19 19:45:11
你可以让它存储一般数据类型Object
,虽然那不允许原始数据类型。
将您的HashTable更改为Hashtable<String, Object>
,并且当您想要存储int
时,您需要先将其抛出(或使用自动播种)至Integer
。在从表格中获得您的价值后,您可以通过if(value instanceof String)
等等来确定您的类型。
没有必要强制转换 - 自动装箱会自动执行(Java 5+)。 – 01es 2012-07-19 19:41:51
该类称为Hashtable,它需要两个类型参数,而不是一个。 – 2012-07-19 19:44:17
Map<String, Object> map = new HashMap<String, Object>()
这给你与String类型的密钥和类型对象,这基本上意味着型对象(日期,整数,字符串等)的任何后代的值的映射图。其他答案正确地指出这样一个事实,即不是使用像int,boolean这样的原语,而是使用它们的对应整数,布尔等。
get
在这样的地图上的返回类型操作是Object
。因此,开发人员有责任正确处理类型信息。
有关Hashtable和HashMap之间有什么区别的问题的一个很好的答案是here。
虽然这是可能的,但它通常不是一个好主意。通常这会导致类型转换异常和问题。
HashTable可以设置为存储通用对象而不是特定的类类型,但是检索它们时的类型转换不会自动发生。
为了将对象从集合中取出,必须开发某种形式的类型检查例程。
您最好为要存储的每个类类型创建一个单独的集合。 PS:我也推荐使用HashMap而不是HashTable。 HashTable已被弃用。
谢谢,我不知道。 – samwell 2012-07-19 20:06:32
- 1. 有没有办法将变量类型绑定到列数据类型?
- 2. 有没有办法获得captcha值并将其存储在一个变量中?
- 3. 将多个数据类型存储在单个HashMap中
- 4. 将数据存储在一个变量或多个变量中?
- 5. 有没有办法在Rails的视图中存储变量?
- 6. 有没有办法获得一个类的变量和函数列表
- 7. Rails:将变量存储在没有模型的类实例中
- 8. 有没有办法在Jinja2中检查上下文变量的数据类型?
- 9. 有没有办法将C++数据类型作为变量返回?
- 10. 有没有办法将列表变量转换为非列表变量?
- 11. 有没有办法在C#中的多个类中使用变量?
- 12. 有没有办法查询一个特定的表或列在sqlite中存储多少数据?
- 13. 有没有办法将一个变量传递给keypressed函数?
- 14. 有没有办法在c#4.5中存储临时列表值?
- 15. 有没有办法将一个类型参数约束为SqlDbType?
- 16. 有没有办法将一个带有散列的URL传递给一个javascript变量?
- 17. 如何将多个变量值存储到单个数组或列表中?
- 18. 有没有办法在SparkR数据框中将列类型更改为双倍
- 19. 有没有办法存储一个函数,它的参数在一个变量中以后再调用?
- 20. 多个变量存储在单个节点java链接列表
- 21. 有没有办法在stackview中有一个全局变量?
- 22. 有没有办法在Haskell的列表中加一个Enum Bounded Ord类型?
- 23. 有没有办法在类中获得某种类型的所有变量?
- 24. 有没有办法在vb.net的每个循环中遍历多个变量?
- 25. 有没有办法创建一个没有字典的散列表?
- 26. 有没有办法在Jenkins中存储整个build.xml文件?
- 27. 将多个值存储在列表中的相同变量
- 28. Oracle:有没有办法获得视图的列数据类型?
- 29. 有没有办法在QMenu中有多个列?
- 30. 有没有办法将列表中的索引合并在一个列表中
将键改为'Object'? – Mysticial 2012-07-19 19:36:28
使用get/set创建一个对象并添加该对象HashTable/ArrayList(或)什么是您感兴趣的集合是不是很好的选择?如果您添加多个数据类型,而检索如果您不知道确切的索引和数据类型,则最终会出现classcastexception。 – kosa 2012-07-19 19:37:03
这听起来像一个非常脆弱的数据结构。你能描述一下你试图达到的目标么,也许有人可以提出一种更好地构建数据的方法吗? – Bobulous 2012-07-19 20:06:57