我正在開發一個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