У меня есть текущее местоположение Широта & Долгота со мной. Я получаю список банкоматов рядом с пользователем из веб-службы API Google и сохраняю данные в Arraylist, как показано ниже.Как сортировать HashMap (внутри ArrayList) в Android?
Код сниппета
double currentLat = xxx;
double currentLang = xxx;
на кнопку мыши я вызвать веб-службу Google мест.
public void buttonClicked(View v) {
ParseXMLData xmlData = new ParseXMLData();
url = baseUrl + "location=" + latitude + "," + longitude + "&" + "radius=" + search_Area_Radius + "&" + "name=" + nameofplace + "&" + "sensor=true" + "&" + "key=" + API_KEY;
xmlData.execute("");
}
Сохранение результата внутри ArrayList ....
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element)nodes.item(i);
map.put("Name", XMLFunctions.getValue(e, "name"));
map.put("Vicinity", XMLFunctions.getValue(e, "vicinity"));
map.put("Latitude", XMLFunctions.getValue(e, "lat"));
map.put("Longitude", XMLFunctions.getValue(e, "lng"));
loc = new Location("");
loc.setLatitude(Double.parseDouble(XMLFunctions.getValue(e, "lat")));
loc.setLongitude(Double.parseDouble(XMLFunctions.getValue(e, "lng")));
Получение расстояния б/ш 2 пункта Фром здесь.
distance = currentLoc.distanceTo(loc);
map.put("Distance",String.valueOf(distance));
mylist.add(map);
loc = null;
distance = 0.0;
}
Реализована компаратор и сортировка ArrayList
public class PositionComparator implements Comparator<HashMap<String, String>> {
public PositionComparator() {
// TODO Auto-generated constructor stub
}
public int compare(HashMap<String, String> o1, HashMap<String, String> o2) {
/*System.out.println(o1.get("O1 Distance :- "));
System.out.println(o2.get("O2 Distance :- "));
System.out.println(o1.get("Distance").compareTo(o2.get("Distance")));
*/
return o1.get("Distance").compareTo(o2.get("Distance"));
}
}
Теперь, что произойдет это данные, которые я есть магазин внутри ArrayList сортируется, но проблема заключается в CompareTo данных метод сортировки на основе только 1-й символ. Предположим, что мои данные похожи на 2.12345 и 11.32545, затем он будет заменен как 2-1 = 1.
Как это решить?
Если у кого есть какие-либо предложения/советы для этого, пожалуйста, помогите мне в этом.
Благодаря
это слишком много работы, чтобы сравнить результаты в ArrayList и хранить их в массиве в порядке, который вы хотите увидеть их? После запуска запроса и получения результатов вы знаете, сколько элементов должен иметь массив. –