сортировка arraylist с использованием другого arraylist - PullRequest
2 голосов
/ 20 января 2012

У меня есть таблица с широтой, длиной, названием места. Я вычислил ближайшее расстояние от текущего местоположения и добавил расстояние в одном массиве, а затем отсортировал в порядке возрастания. Затем я добавил имя в другой arraylist. Теперь мне нужно установить имена в порядке, используя расстояние от другого списка. Как это сделать?

Ответы [ 5 ]

3 голосов
/ 20 января 2012

Я думаю, что вы слишком часто используете массивы. Если у вас есть два или более фрагмента связанных данных, вам не следует помещать каждый фрагмент в отдельный массив. Вместо этого создайте класс для хранения всех связанных данных (широта, длина, расстояние и имя) и получите массив (или некоторую другую коллекцию, которая лучше соответствует вашим потребностям, такую ​​как SortedList), которая содержит экземпляры этого класса. Класс может реализовать Comparable, используя расстояние в качестве меры и, следовательно, разрешить сортировку по расстоянию.

1 голос
/ 20 января 2012

ваши расстояния рассчитаны по широте, долготе в этой таблице? тогда почему бы не использовать структуру данных карты?

предоставляет вам местоположение пары-расстояние

0 голосов
/ 20 января 2012

использовать Arrays.sort () . Вы даже можете не добавлять расстояние каждого из них в текущий массив в отдельном массиве. просто правильно установите компаратор.

используйте это после выполнения toArray() на вашем ArrayList.

0 голосов
/ 20 января 2012

Предположительно, у вас есть класс, который содержит широту, долготу и название местоположения. Вы можете поместить объекты этого класса в TreeSet, где компаратор имеет текущее местоположение в качестве аргументов конструктора и вычисляет расстояния для сравнения.

0 голосов
/ 20 января 2012

Почему бы не создать непосредственно TreeMap с расстоянием в качестве ключа и именем в качестве значения. Таким образом, они всегда будут отсортированы по расстоянию.

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