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:我在下面添加了一些详细信息。这应该是一个注释这应该是一个注释