问题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值之间的距离,依此类推。 。)
答案 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
的声明移至课程的开头,并将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
答案 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 {您的第二个最后一项}轻松获得最后两项。