Sim*_*imo 0 java string android json
我有这个方法:
private String convertPolygonToJSON(Polygon p) {
List<LatLng> points=p.getPoints();
String s="[1,["+points.get(0);
for (int i = 1; i < points.size(); i++) {
s=s+","+points.get(i);
}
s=s+"],{\"strokeColor\":\"#FF0000\",\"fillColor\":\"#00FFFF\"}]";
return s;
}
private String getJsonPolygones(List<Polygon> polys) {
String s="";
for (int i = 0; i < polys.size(); i++) {
s=s+convertPolygonToJSON(polys.get(i))+",";
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
将polygone转换为json String,问题是polgon有很多点,这个函数被调成一个循环,将多边形List转换为最终的json.
我想,它需要大量内存,我看到很多GC登录,甚至在15分钟之后循环也没有结束.
(我有一个多边形列表(7xxx点,4xxx点,2xx点.....)
我想知道是否有替代方法可以获得这个JSON.
欢迎任何帮助,谢谢你提前.
由于人们倾向于忽略注释,因此在每种情况下,每次创建一个新的字符串对象,因为字符串是不可变的.这将导致大量内存消耗,从而导致更高的GC活动.
使用StringBuilder将允许您在没有这样的内存开销的情况下有效地连接字符串:
private String convertPolygonToJSON(Polygon p) {
List<LatLng> points=p.getPoints();
StringBuilder sb = new StringBuilder("[1,["+points.get(0));
for (int i = 1; i < points.size(); i++) {
sb.append(+ ","+points.get(i));
}
sb.append("],{\"strokeColor\":\"#FF0000\",\"fillColor\":\"#00FFFF\"}]");
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
而对于其他方法也是如此.