Java Android长字符串concatenament,
我有以下方法:Java Android长字符串concatenament,,java,android,json,string,Java,Android,Json,String,我有以下方法: 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); }
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;
}
private String convertPolygontOSON(多边形p){
列表点=p.getPoints();
字符串s=“[1,[”+点.get(0);
对于(int i=1;i
将polygone转换为json字符串,
问题是多边形有很多点,这个函数被调用成一个循环,将多边形列表转换成最终的json
我猜,这需要很多内存,我看到很多GC日志,即使在15分钟后,循环也不会结束
(我有一个多声道的列表(7xxx点、4xxx点、2xx点……)
我想知道是否有其他方法可以得到这个JSON
欢迎提供任何帮助,提前谢谢。在这种字符串用法中,您必须使用StringBuilder。 应用于您获得的代码:
private String convertPolygonToJSON(Polygon p) {
List<LatLng> points = p.getPoints();
StringBuilder sb = new StringBuilder();
sb.append("[1,[");
sb.append(points.get(0));
for (int i = 1; i < points.size(); i++) {
sb.append(',');
sb.append(points.get(i));
}
sb.append("],{\"strokeColor\":\"#FF0000\",\"fillColor\":\"#00FFFF\"}]");
return sb.toString();
}
private String getJsonPolygones(List<Polygon> polys) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < polys.size(); i++) {
sb.append(convertPolygonToJSON(polys.get(i)));
sb.append(',');
}
return sb.toString();
}
private String convertPolygontOSON(多边形p){
列表点=p.getPoints();
StringBuilder sb=新的StringBuilder();
某人加上(“[1,[”);
sb.追加(分.得(0));
对于(int i=1;i
在这种字符串用法中,必须使用StringBuilder。
应用于您获得的代码:
private String convertPolygonToJSON(Polygon p) {
List<LatLng> points = p.getPoints();
StringBuilder sb = new StringBuilder();
sb.append("[1,[");
sb.append(points.get(0));
for (int i = 1; i < points.size(); i++) {
sb.append(',');
sb.append(points.get(i));
}
sb.append("],{\"strokeColor\":\"#FF0000\",\"fillColor\":\"#00FFFF\"}]");
return sb.toString();
}
private String getJsonPolygones(List<Polygon> polys) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < polys.size(); i++) {
sb.append(convertPolygonToJSON(polys.get(i)));
sb.append(',');
}
return sb.toString();
}
private String convertPolygontOSON(多边形p){
列表点=p.getPoints();
StringBuilder sb=新的StringBuilder();
某人加上(“[1,[”);
sb.追加(分.得(0));
对于(int i=1;i
由于人们往往忽略注释,在您的例子中,由于字符串是不可变的,因此每次都要创建一个新的字符串对象。这将导致大量内存消耗,从而导致更高的GC活动
使用将允许您在进行过程中高效地连接字符串,而无需此类内存开销:
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();
}
private String convertPolygontOSON(多边形p){
列表点=p.getPoints();
StringBuilder sb=new StringBuilder(“[1,[”+points.get(0));
对于(int i=1;i
另一种方法也是如此。因为人们往往忽略注释,在您的例子中,由于字符串是不可变的,所以每次都要创建一个新的字符串对象。这将导致大量内存消耗,从而导致更高的GC活动 使用将允许您在进行过程中高效地连接字符串,而无需此类内存开销:
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();
}
private String convertPolygontOSON(多边形p){
列表点=p.getPoints();
StringBuilder sb=new StringBuilder(“[1,[”+points.get(0));
对于(int i=1;i
另一个方法也是如此。字符串类是不可变的类,因此修改字符串需要更多的内存和CPU使用(当重复工作正在进行时) 对于此类操作,我建议您使用或类
这两个类都是可变类。因此您可以对它们执行字符串操作。字符串类是不可变类,因此修改字符串需要更多的内存和CPU使用(当重复工作正在进行时) 对于此类操作,我建议您使用或类
这两个类都是可变类。因此您可以对它们执行字符串操作。@npinti您可以创建一个应答谢谢我将尝试此操作。@Simo:我在下面添加了一些详细信息。@npinti您可以创建一个应答谢谢我将尝试此操作。@Simo:我在下面添加了一些详细信息。这应该是一个注释这应该是一个注释