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



问题1:

我有一个函数,每次我得到一个新的Lat-Long值时都会调用它,我想把这些Lat-Lang值添加到列表中,但每次我得到新值时,列表都会被最后一个值重写(没有附加(。

我的代码(只有纬度(

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

问题2:

一旦我在列表中有了值(它会随着值的变化而增加(,我想在每次列表变化时获得最后两个值,并执行一些功能(获取列表中最后两个Lat-Long值之间的距离,依此类推。(

每次调用时

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

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

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

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

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

你应该在开始时只安装一次你的列表。

像这样做:

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

每次调用getDistance()时,都需要声明一个类成员,而不是创建一个新的本地list。此外,由于列表将存储纬度和经度信息,我建议您使用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

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{您倒数第二项},您将很容易获得最后两项。

最新更新