我有谷歌地圖的應用程序,因爲谷歌地圖不提供API在Android地圖上創建路線,我使用WebApi來獲取路線。 我將路由存儲在ArrayList中,然後通過Intent將其傳入到我的活動中,其中刪除路由。如果LatLng對象少於2000年,它的效果很好,否則,如果它超過2000個對象,那麼我有Java活頁夾異常,也許意向有限制大小。 要處理超過2000個對象的情況,我將LatLng的緯度和經度保存爲文件並僅傳遞路徑,然後在活動中加載文件。但是這個文件很大〜0.5-3 mB。 我怎樣才能解決我的問題,或者我怎樣才能用double值壓縮我的數組列表?壓縮Arraylist或傳遞ArrayList與對象
2
A
回答
1
一對夫婦的想法
- 不要使用對象來封裝緯度/只要有額外的開銷。使用更簡潔的數據結構,例如雙精度數組或者緯度/長度座標的地理散列圖
- 將輸出壓縮爲建議的另一個答案
- 更高級的選項可能是使用一個trie編碼列表的geohashs。鑑於一條路線將由多個彼此非常接近的座標組成,「壓縮」可能相當高。
0
您可以將數據壓縮到ZipOutputStream並將其作爲原始字節傳遞或通過ZipFile使用。如果值更頻繁,壓縮應該是相當不錯的。
0
確保寫入數據時不浪費空間。不要使用文本/ ASCII/XML數據結構/文件來存儲數據。
使用DataOutputStream
和writeDouble(..)
寫入數據的方法(結果:每個雙值8字節)。或者,您可以將雙精度值轉換爲浮點數並通過writeFloat(..)
進行寫入 - 這會將要寫入的數據減半。通常用於在地圖上顯示點的浮點數仍然足夠精確。
閱讀作品當然只是使用DataInputStream
。
壓縮也是一種選擇,但更好地將要寫入的數據最小化,因爲壓縮會佔用大量CPU資源,這意味着它會消耗功率和時間。
相關問題
- 1. 傳遞對象列表或ArrayList對象
- 2. 將對象傳遞給Arraylist
- 3. 在對象中傳遞ArrayList
- 4. 將ArrayList對象傳遞給片段
- 5. Java - 通過TCP傳遞對象ArrayList
- 6. 傳遞的Java ArrayList對象來自R
- 7. 將對象傳遞給ArrayList Java
- 8. 通過Bundle傳遞ArrayList對象?
- 9. JSP/JSTL解析ArrayList的傳遞對象
- 10. 克隆新的對象傳遞給ArrayList?
- 11. ArrayList ArrayList中的對象
- 12. ArrayList和值傳遞
- 13. ArrayList對象
- 14. ArrayList對象(java)
- 15. Android ArrayList與ArrayList
- 16. 如何將ArrayList()或ArrayList <String>中的對象轉換爲ArrayList <Integer>?
- 17. ArrayList通過屬性對象ArrayList保存?
- 18. ArrayList從其他ArrayList中刪除對象?
- 19. ArrayList IndexOutOBoundsException從ArrayList中刪除對象後
- 20. 傳遞C++對象與升壓
- 21. 商店,ArrayList對象
- 22. ArrayList中的對象
- 23. 對象ArrayList屬性
- 24. ArrayList,對象覆蓋
- 25. 結果對象arrayList
- 26. 將ArrayList傳遞給servlet?
- 27. 將值傳遞給arraylist
- 28. 在包中傳遞double ArrayList
- 29. GWT,將ArrayList傳遞給JSNI
- 30. 將ArrayList傳遞給JQuery Flot
你可以向我們展示一些代碼或對象圖與陣列列表中的數據樣本?當我們看不到你已經做了什麼時,很難告訴你該怎麼做。謝謝。 – Husman
在僅限ArrayList對象LatLng中,它們只有兩個字段(double) - 經度和緯度。 – onCreate