我有一個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. 有沒有辦法將XML.appendChild函數存儲在變量中?
- 2. 有沒有辦法將變量類型綁定到列數據類型?
- 3. 將多個派生類類型存儲在單個列表中
- 4. 有沒有什麼辦法可以在運行時在一個變量中存儲不同的數據類型
- 5. Python - 有沒有辦法將一個操作(+ - * /)存儲在一個列表中或作爲一個變量?
- 6. 有沒有辦法獲得captcha值並將其存儲在一個變量中?
- 7. 有沒有辦法將DBCC CheckIdent的值存儲到變量中?
- 8. 將多個數據類型存儲在單個HashMap中
- 9. 將數據存儲在一個變量或多個變量中?
- 10. 數據沒有存儲在變量中
- 11. 有沒有辦法在OllyDbg中打開多個內存轉儲?
- 12. 有沒有辦法確保一個數組變量(unsigned int *)將在內存中?
- 13. 有沒有辦法在Rails的視圖中存儲變量?
- 14. 有沒有辦法在SELECT語句中存儲變量?
- 15. 有沒有辦法獲得一個類的變量和函數列表
- 16. 有沒有辦法爲php mysqli登錄存儲散列密碼?
- 17. 有沒有辦法將一個變量列表中不存在的變量列表中的某個值更快地分配給另一個變量?
- 18. 有沒有辦法var_dump一個變量?
- 19. Rails:將變量存儲在沒有模型的類實例中
- 20. 有沒有辦法在Jinja2中檢查上下文變量的數據類型?
- 21. 有沒有辦法將C++數據類型作爲變量返回?
- 22. 有沒有辦法在一個存儲庫中有一個文件,但沒有在另一個存儲庫中?
- 23. 有沒有辦法在C#中的多個類中使用變量?
- 24. 有沒有辦法將列表變量轉換爲非列表變量?
- 25. 有沒有辦法查詢一個特定的表或列在sqlite中存儲多少數據?
- 26. 有沒有辦法將一個變量傳遞給keypressed函數?
- 27. 有沒有辦法在c#4.5中存儲臨時列表值?
- 28. 有沒有辦法將一個類型參數約束爲SqlDbType?
- 29. 有沒有辦法改變配置單元表中的列類型?
- 30. 有沒有辦法將一個帶有散列的URL傳遞給一個javascript變量?
將鍵改爲'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