问题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>();
如果你想进行计算,你需要将它们存储为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);
}
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
的声明移动到类的开头,并将list
和latitudeString
的类型更改为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{您倒数第二项},您将很容易获得最后两项。