![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Illusion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.6.2006 Репутация: нет Всего: нет |
У меня есть задачка такая, про автобусы:
Автобусы (список) Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке. Сведения о каждом автобусе включают: - номер автобуса; - фамилию и инициалы водителя; - номер маршрута; Программа должна обеспечивать: - начальное формирование данных обо всех автобусах в парке в виде списка; - при выезде каждого автобуса из парка вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте; - при въезде каждого автобуса в парк вводится номер автобуса, и программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке; - по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте. Вот... Я написал программку, но в ней используется библиотечный HashMap. А мне нужно без этого, т.е. нужно самому написать подобный класс... Тока вот я понятия не имею, как это сделать. Если кто может, помогите, пожалуйста! |
|||
|
||||
| Beard |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: нет Всего: 9 |
Так взять и посмотреть на исходники стандартного HashMap-а да и реализовать самому
нечто подобное для своей задачи |
|||
|
||||
| Illusion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.6.2006 Репутация: нет Всего: нет |
Это, конечно логично. И я даже пытался. Но ничего толкового не получилось
|
|||
|
||||
| Beard |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: нет Всего: 9 |
Так что не получилось?
Давайте уж подробно - в чем сложность в переделке стандартного хэшмепа? Это сообщение отредактировал(а) Beard - 10.6.2006, 00:19 |
|||
|
||||
| Illusion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.6.2006 Репутация: нет Всего: нет |
Мне, собственно, нужен не весь хэшмап, а только некоторые функции:
put(ключ, значение) - положить в контейнер get(ключ) - получить значение по ключу remove(ключ) - удалить значение по ключу и еще - это конструкция итераторов. Создание самого итератора. Методы values() и iterator(). Ну и для него метод hasnext() - проверка, есть ли еще значения в контейнере и next() - что-то типо get, но вытаскивает просто следующее значение. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 15 Всего: 538 |
Я когда-то писал подобный класс, для своих нужд. Только итератора в нем нет и нет rehash-а.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Illusion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.6.2006 Репутация: нет Всего: нет |
Спасибо за класс. А итератора нет? И почему, когда я смотрю библиотечный класс хэшмэп, там подсвечивается сразу немеренно ошибок?
Вот например метод values()
переменная values нигде не определяется, но это не мешает ведь всему работать |
|||
|
||||
| Beard |
|
||||||||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: нет Всего: 9 |
Помню, когда старой Idea пользовался, там проблемы с Javadoc-ом были - тоже кучу ошибок показывала...
А values опеределены в AbstractMap, который является предком HashMap-а (кстати, а какой JDK вы пользуетесь - 1.4.2 я точно такого кода не видел (про 1.5.0 и не говорю - там бы генерики были)?):
А по поводу итератора - можно по аналогу keys() сделать метод values() :
а потом:
Ну а если вообще нельзя пользоваться java.util.*, то что-нить в этом духе:
Только в таком случае итератор "живет" отдельно от нашего мэпа... Но можно завести по аналогу стандартного хэшмэпа
и везде, где происходят изменения в мэпе (get/put...) делать
а в итераторе смотреть - если у нас отличается modCount от того числа, что было при инициализации итератора, то бросать ConcurrentModificationException |
||||||||||||||||
|
|||||||||||||||||
| Illusion |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.6.2006 Репутация: нет Всего: нет |
Спасибо. Поменял у себя пару вещей и все работает!
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 15 Всего: 538 |
modCount нужен чтобы отслеживать изменения, если например был добавлен элемент, то это может нарушить порядок итерации, и в таком случае просто выбрасывается исключение ConcurrentModificationException. Хотя если у тебя просто учебный пример, то это не нужно. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java tools & IDE's | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |