将字符串变量添加到列表(继续添加到列表)

时间:2015-07-31 13:17:02

标签: java android

问题1:

我每次获得一个新的Lat Long值时都会调用一个函数,我想将这些Lat Long值添加到列表中,但每次获得一个新值时,列表都会覆盖最后一个值(没有附加)。

我的代码(仅限纬度)

    public void getDistance() {

    List<String> list = new ArrayList<String>();
    list.add(latitudeString);

    System.out.println("list: "+list);  
}

问题2:

一旦我在列表中有值(随着值的变化会增加),我想在每次列表更改时获取最后两个值并执行一些函数(获取列表中最后两个Lat Long值之间的距离,依此类推。 。)

5 个答案:

答案 0 :(得分:3)

每次致电

List<String> list = new ArrayList<String>();

将生成一个新列表。您需要将它声明为类中的私有字段(在方法之外):

private List<String> list = new ArrayList<String>();

如果您想进行计算,则需要将它们存储为Double s,而不是String s。这意味着你的代码将是这样的:

private List<Double> latitudes = new ArrayList<Double>();
private List<Double> longitudes = new ArrayList<Double>();

public void getDistance() {

    // get lat & lon

    Double latitude = Double.parseDouble(latitudeString);
    Double longitude = Double.parseDouble(longitudeString);

    if (latitudes.size() > 0) {
        Double lastLatitude = latitudes.get(latitudes.size() - 1);
        Double lastLongitude = longitudes.get(longitudes.size() - 1);
        // do your calculations
    }

    latitudes.add(latitude);
    longitudes.add(longitude);

}

答案 1 :(得分:1)

List<String> list = new ArrayList<String>();
public void getDistance() {
list.add(latitudeString);
System.out.println("list: "+list);  
}

您应该只在开始时安排一次列表。

答案 2 :(得分:1)

这样做:

List<String> list = new ArrayList<String>();//declare it outside the method
public void getDistance() {
list.add(latitudeString);

System.out.println("list: "+list);  
}

对于第二个问题:

    List<String> list = new ArrayList<>();
    int size = list.size();
    String[] data = new String[2];
    data[0] = list.get(size - 2);//2nd to last
    data[1] = list.get(size - 1);//last

答案 3 :(得分:0)

每次调用list时,您都需要声明一个类成员,而不是创建一个新的本地getDistance()。此外,由于该列表将存储纬度和经度信息,因此我建议您使用double代替String

list的声明移至课程的开头,并将listlatitudeString的类型更改为double

class Class1 {
    List<double> list = new ArrayList<double>();
    ...
    public void getDistance() {
        list.add(latitudeString /*should be a double*/);
        ...
    }
}

使用get()和size()方法获取最后两个值:

double value1 = list.get(list.size() - 1); //last value
double value2 = list.get(list.size() - 2); //second-to-last value

答案 4 :(得分:-1)

1-您应该只在开始时实例化一次列表。

List<String> list = new ArrayList<String>();
public void getDistance() {
list.add(latitudeString);
System.out.println("list: "+list);  
}

2 - 您可以使用list.size() - 1 {您的最后一项}和list.size() - 2 {您的第二个最后一项}轻松获得最后两项。