我有兩個數組列表A1,A2。 A1的每個元素都是關鍵字,A2的每個元素都是對應的值。所以我找到的解決方案是循環在A1(A1和A2具有相同的大小)使hashmap.add(A1 [i],A2 [i]),但有沒有辦法直接發送鍵值對作爲兩組?我想避免循環它會減慢我的代碼。先謝謝你!HashMap:獲取arraylist是一組鍵或值
回答
你有一個鍵值對的列表。獲取該列表並將其添加到Hashmap
的唯一方法是迭代列表。如果您的鍵值對存儲在某個其他類型的Map
對象中,則可以使用Hashmap
構造函數HashMap(Map<? extends K,? extends V> m)
而不是ArrayList
。
如果是正確的方法,不要擔心代碼中的迭代。記住Polya:找到一個解決方案,然後看看你是否能找到更好的解決方案。
「我想避免循環它會減慢我的代碼。」任何時候代碼都會執行任何操作,這會減慢代碼的速度。關鍵是要避免做你不需要做的事情。有些東西需要遍歷你的列表。
也許你將能夠避免重複,將數據插入到數組直接做入HashMap中。
祝你好運!
是的,我終於找到了一種方法讓我的代碼允許我這樣做! :) – user235693 2010-01-08 17:52:56
如果您碰巧能夠控制將項目插入陣列的順序,並且可以按排序順序執行此操作,則最終可能不需要HashMap
。雖然哈希查找將表現出分期常量時間,您可以在O(log n)的時間binary search對像數組排序的隨機接入序列得到查找。函數Arrays#binarySearch()
允許您確定哪個元素(如果有)與第一個數組中的鍵匹配,並且在給定該位置後,可以訪問並行數組中的對應值。
這種方法,當你建立數據只有一次,經常查找條目,並且不做任何後續添加或條目刪除是最有利的。
你甚至可以把它包裝在你自己的Map實現中,它可以有一個2 List參數的構造函數:) – extraneon 2010-01-08 16:12:39
是的,你可能想要爲所有的變異方法拋出'UnsupportedOperationException',包括那些由迭代器暴露。 – seh 2010-01-08 16:35:57
嗨,呃,這就是問題所在,我無法控制將項目插入數組的順序。 – user235693 2010-01-08 17:50:41
- 1. 試圖獲取hashmap中的arraylist值
- 2. Java ArrayList:從包含HashMap的ArrayList中獲取不同的值
- 3. 加入長鍵和ArrayList值的HashMap
- 4. 獲取依賴於鍵值的HashMap中
- 5. Java Hashmap從對象鍵獲取值
- 6. ArrayList作爲Hashmap中的鍵
- 7. 從ArrayList <HashMap <String,String >>>獲取鍵值到另一個數組中
- 8. 獲取HashMap條目的ArrayList條目
- 9. 獲取ArrayList值?
- 10. android獲取HashMap數組的值
- 11. 獲取數組中的值不是鍵
- 12. 獲取ArrayList <HashMap <String,String >>的值用於顯示
- 13. 從Arraylist中分別獲取每個索引值<Hashmap>
- 14. 如何獲取ArrayList <HashMap>作爲字符串的值?
- 15. HashMap <String,ArrayList <Integer>>獲取值
- 16. 要打印一個HashMap,其中關鍵是員工數量和價值的ArrayList
- 17. Sum HashMap,ArrayList值(來自CSV)
- 18. HashMap鍵和值
- 19. 爲什麼我在Firebase-RealDatabase上獲取ArrayList而不是HashMap?
- 20. 是否有可能將AsyncTask的結果作爲Arraylist HashMap獲取
- 21. HashMap是一個包含ArrayList的函數
- 22. Java - 如何檢查一個ArrayList中的值是否是HashMap中的一個鍵的值?
- 23. 如何使用獲得2項或HashMap的設定值或ArrayList的
- 24. 如何從HashMap獲取值?
- 25. 如何獲取hashmap值?
- 26. Android - 從2d獲取值HashMap
- 27. 獲取嵌套的Hashmap值
- 28. 如何獲取該HashMap中值的相應鍵值
- 29. HashMap - 獲取與鍵值相關的所有值
- 30. 如何從HashMap中獲取鍵值對的值?
當然,這個構造函數也會遍歷整個參數映射。 – 2010-01-08 16:12:51
嗨Dougman,謝謝你的回答和小短語! – user235693 2010-01-08 17:52:03
邁克爾你給我的好細節! – user235693 2010-01-08 17:54:18