我正在开发一个Android应用程序。我需要根据另一个排序排序数组。我基于最低到最高排序一个(距离),并且需要根据距离对我的经度值进行排序。所以说,如果距离5的经度是41.2265,距离6的经度是41.2187,那么我需要对从最低到最高的距离{5,6}进行排序,然后根据它们的第一对排序经度。我已经读过,你可以用2D数组来做到这一点,但我不想这样做。我认为这也可以通过绘图来完成,但我不知道如何。我的代码如下:如何根据其他阵列对阵列进行排序
NearestStations.java的部分
ArrayList<String> distancetos = new ArrayList<String>();
ArrayList<String> longitudeArray = new ArrayList<String>();
while(iterator.hasNext()){
for (int i=0; i<144;i++){
double distance = 0;
double lat_end = 0;
double lon_end = 0;
try {
lat_end = Double.parseDouble(iterator.next());
lon_end = Double.parseDouble(iterator1.next());
longitudeArray.add(Double.toString(lon_end));
Log.i("Lon_end", String.valueOf(lon_end));
} catch (NumberFormatException e) {
Log.v("Main", "Convert to Double Failed : ");
}
Location locationA = new Location("point A");
locationA.setLatitude(latitude);
locationA.setLongitude(longitude);
Location locationB = new Location("point B");
locationB.setLatitude(lat_end);
locationB.setLongitude(lon_end);
distance = locationA.distanceTo(locationB) * 0.000621371192237334;
Log.i("distancebefore", String.valueOf(distance));
String dista = Double.toString(distance);
distancetos.add(dista);
}
}
Collections.sort(distancetos);
distancea = distancetos.get(0);
distance1 = distancetos.get(1);
String Longa = longitudeArray.get(0);
String Long1 = longitudeArray.get(1);
Log.i("distanceafter", String.valueOf(distancea));
Log.i("distance1after", String.valueOf(distance1));
String[] Stations = getResources().getStringArray(R.array.Stations);
String[] Longitude = getResources().getStringArray(R.array.Longitude);
String[] Latitude = getResources().getStringArray(R.array.Latitude);
Map<String, String> myMap = new HashMap<String, String>();{
for (int i = 0; i <144; i++) {
myMap.put(Latitude[i], Stations[i]);
}
}
Map<String, String> myMap1 = new HashMap<String, String>();{
for (int h = 0; h <144; h++) {
myMap1.put(Longitude[h], Stations[h]);
}
}
String value = myMap1.get(Longa);
}
}
谢谢您的帮助。
我真的不能从你的代码中知道你正在尝试做什么,但我非常肯定排序字符串数组('distancetos')不是你想要的。由于字符'1'在'4'之前,因此这会比较“按字母顺序排列”(词典)顺序的内容并使“100.12345”显示小于“45.00032”。 – ajb
@ajb这是我从未想过的事情。但是我会发现距离不到10英里,所以我不认为它会影响它。如我错了请纠正我。 – hichris123
这是一般的不好的做法。如果你想比较数字,然后比较数字;不要比较字符串。你永远不知道什么时候一些意外的数据会回来咬你。 – ajb