2014-02-21 3 views
1

Я пытаюсь создать код, который будет читать информацию из текстового файла. Например, Bus_Routes.txt будет содержать Route_A.txt 283,284, и из него открывается файл Route_A.txt и содержит 2 столбца, Latitude Longitude с указанными координатами. Это я написал хорошо.К HashMap или не к HashMap?

Из этого я пытаюсь заставить устройство с id 283 перемещаться вдоль координат в последовательности. Мне рекомендовали использовать HashMap. Поэтому мой план состоит в том, чтобы создать HashMap для координат Route_A.txt, иметь один столбец для Latitude, а другой для Longitude. Из этого я собирался создать еще один HashMap, который будет содержать device_id и HashMap, содержащий координаты, и device_id будет проходить через каждый шаг HashMap.

Можно ли это сделать или я полностью искал не ту область? Если у кого-то есть предложения, они были бы очень благодарны

ответ

2

Не храните ваши координаты в HashMap. Было бы сложно сохранить несколько координат с ключом (широта?), Являющимся одним и тем же. например простой Map<Integer, Integer> будет удерживать только одно значение долготы для широты, и это не позволит вашему маршруту иметь несколько пунктов назначения по одной и той же долготной линии.

Я предпочел бы использовать:

List<Coord> 

где Coord это ваш Шир/пара. List сохранит порядок, тогда как нормальный HashMap не будет.

Обратите внимание, что я намеренно инкапсулирую пару lat/long как конкретный объект. Вы можете сохранить его как набор целых чисел, но я предпочел бы конкретный объект для принудительного ввода текста, позволяющего добавлять функциональность и т. Д. Как уже упоминалось в другом месте, Java является языком OO, и вы не должны стесняться создавать классы для представления этих понятий (знак, что вы должны сделать это, когда вы создаете что-то вроде Map<String,List<Integer,Integer>>)

+0

Эй, спасибо за помощь. Поэтому вы предлагаете создать отдельный класс для получения координат, который будет содержать геттеры и сеттеры (правильно?), Если вы не собрались, я довольно новичок в этом! Из этого я вызываю класс getSet и делаю «Список »? – Dan

+0

Я бы ожидал, что координата будет содержать ваши лат/длинные точки (и, возможно, ваши сеттеры/геттеры - возможно, вам не нужны сеттеры, поскольку вы просто установите членов в свой конструктор?) –

2

HashMap - это структура данных, которая позволяет связать значение с ключом и позволяет, учитывая ключ, вернуть значение в постоянное время (без необходимости цитировать, например, с помощью списка или массива).

Таким образом, используйте эту структуру, если ваша пользовательская система нуждается в такой функциональности. Устройства, хранящиеся на карте, где идентификатор устройства является ключом, звучат как хорошая идея.

Если, с другой стороны, вы хотите, чтобы структура данных содержала поля (например, широту, долготу), затем создайте класс. Java - это язык OO. Вы должны создать свои собственные классы. И если вам нужен список координат, то вы должны использовать List<Coordinate>, а не HashMap.

Смежные вопросы