私はAndroidアプリを開発しています。別の並べ替えに基づいて配列を並べ替える必要があります。最低から最高に基づいて 1 つ (距離) を並べ替えており、経度の値を距離に従って並べ替える必要があります。たとえば、距離 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);
}
}
ご協力ありがとうございました。