Java 限制for循环结果的大小

Java 限制for循环结果的大小,java,android,for-loop,Java,Android,For Loop,我使用for循环在android中解析一个GPX文件,并将生成的lat和long放入适合于google静态地图的字符串中。静态映射api允许URL最多2000个字符 我想做的是循环gpx文件中的条目,以便在不产生太多字符的情况下获得最大数量的细节。例如,如果lat和long是10个字符,那么我总是希望生成尽可能接近200个标记 我从这个工作代码开始 List<Location> gpxList = decodeGPX(gpxFile); for(int i = 0; i < g

我使用for循环在android中解析一个GPX文件,并将生成的lat和long放入适合于google静态地图的字符串中。静态映射api允许URL最多2000个字符

我想做的是循环gpx文件中的条目,以便在不产生太多字符的情况下获得最大数量的细节。例如,如果lat和long是10个字符,那么我总是希望生成尽可能接近200个标记

我从这个工作代码开始

List<Location> gpxList = decodeGPX(gpxFile);
for(int i = 0; i < gpxList.size(); i++){
    info += ((Location)gpxList.get(i)).getLatitude()
            + ","
            + ((Location)gpxList.get(i)).getLongitude() + "|";
}
List gpxList=decodeGPX(gpxFile);
对于(int i=0;i
实现这一点的明显方法是获取列表的长度并除以允许的最大标记数(本例中为200),确保这是一个整数,然后在循环迭代时增加这么多项。但是如何确保列表末尾没有越界错误呢

编辑


明确地说,如果有意义的话,我想减少数据点的频率,而不是减少点的数量。假设我有一个2000马克的gpx文件,它提供了一个往返。我希望生成一个200点的列表,仍然给出完整的行程(精度有所下降),而不是只列出前200点,只给出行程的开始,在向
info
字符串(我假设它是一个字符串)添加新字符之前,检查要添加的字符数,并验证
info
字符串中是否有足够的空间。如果没有,则结束循环

List<Location> gpxList = decodeGPX(gpxFile);
boolean hasRoom = true;
for(int i = 0; i < gpxList.size() && hasRoom; i++) {
    String next = ((Location)gpxList.get(i)).getLatitude()
            + ","
            + ((Location)gpxList.get(i)).getLongitude() + "|";
    if (info.length()+next.length()<=2000)
        info += next;
    else
        hasRoom = false;
}
List gpxList=decodeGPX(gpxFile);
布尔hasRoom=true;
对于(int i=0;i如果(info.length()+next.length(),请考虑使用一个StringBuilder(在循环之前创建)而不是在循环中创建字符串并进行字符串连接。使用字符串的解决方案会创建许多对象-这对于垃圾收集器来说是一项艰巨的工作。@Bartoszbiliki我完全同意。我只是根据OP的代码来回答。我通常使用字符串上的
+
运算符将代码改为使用StringBuilder。谢谢,但不是qu这就是我要找的。我的错,我会添加一个编辑来尝试清理这个