我有谷歌地图的应用程序,因为谷歌地图不提供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