Сортировка списка местоположений по ближайшим первым к моему местоположению - Android - PullRequest
0 голосов
/ 24 апреля 2020
private List<Location> sortLocations(List<Location> locations, final Location myLocation) {

        Comparator comp = new Comparator<Location>() {
            @Override
            public int compare(Location o1, Location o2) {

                Float dist1 = o1.distanceTo(myLocation);
                Float dist2 = o2.distanceTo(myLocation);

                return dist1.compareTo(dist2);
            }
        };

        Collections.sort(locations, comp);

    return locations;
}

Я хочу отсортировать список местоположений по порядку ближайших первых к myLocation. Мой код правильный, потому что проблема в том, что он не сортирует по возрастанию или по убыванию. Это просто случайный, даже не похожий на порядок в базе данных. Но оригинал и новый список местоположений тот же .. Plz help ..

1 Ответ

0 голосов
/ 24 апреля 2020

Может помочь

 private List<Location> sortLocations(List<Location> locations, final Location myLocation) {
        Map<Float, Location> map = new TreeMap<>(Comparator.comparing(Float::floatValue));
        locations.forEach(location -> map.put(Math.abs(location.distanceTo(myLocation)), location));
        return new ArrayList<>(map.values());
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...