2012-01-20 3 views
2

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

ответ

0

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

+1

TreeMap с дистанционным ключом - хорошая идея, но что делать, если есть 5 записей с одинаковым расстоянием? – Kent

+0

Хмм, хорошая точка. :) – Tudor

1

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

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

+0

если я поместил значения в карту, то снова мне нужно поместить их в список – Vamshi

+0

Мне нужно рассчитать расстояния, используя те lat, long и добавить имена в списке, используя ближайшее расстояние – Vamshi

0

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

3

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

+0

gr8 ans ... Это то, что я сделал в подобной ситуации !!! – aProgrammer

-1

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

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

+0

Точка вопроса заключалась в том, как связать массив имен с массивом расстояний (который был отсортирован). –