В рамках продолжающегося проекта класса нас попросили внедрить Карты для лучшей привязки объектов.
Короче говоря, в настоящее время у нас есть четыре массива, которые содержат объекты
// Array Lists used for sorting.
private static ArrayList<Party> partyList = new ArrayList<Party>();
private static ArrayList<Creature> creatureList = new ArrayList<Creature>();
private static ArrayList<Treasure> treasureList = new ArrayList<Treasure>();
private static ArrayList<Artifact> artifactList = new ArrayList<Artifact>();
У каждого класса есть свои поля (т. Е. У партии есть «индекс», «имя», у существа «индекс», «имя», «возраст», рост »и т. Д.), Но все они имеют уникальный индекс )
На этой неделе мы должны реализовать хеш-карты, где ключом объекта является его индекс.
Итак, в качестве примера:
creatureMap.put(creature.index, creature)
...
Наша программа также позволяет осуществлять поиск. Поэтому я понимаю, что теперь, когда мы ищем по индексу, мы просто ищем в соответствующей хэш-карте нужный индекс и работаем с объектом, который является его значением.
Однако наша программа также позволяет пользователю выполнять поиск по имени, росту, весу и т. Д. Итак, как эффективно использовать здесь хэш-карты, если это помогает только при поиске по индексу? Что произойдет, если я захочу найти существо по имени? Мне нужно было бы пройтись по каждому значению в хэш-карте, посмотреть на его поле 'name'. Что именно я делаю с массивом.
Наш профессор сказал это, когда кто-то задал похожий вопрос:
Идея состоит в том, что в первом проекте простой подход заключался в
вставьте все элементы в списки массивов и когда нужно связать
существо для вечеринки или предмет для существа,
ищите ArrayList линейно, пока не будет найден индекс элемента.
Это операция O (n), если ArrayList не отсортирован, и O (log n)
операция, если список отсортирован, но сортировка обычно O (n * n)
или O (n log n) в зависимости от используемой операции сортировки.
На этой неделе я прошу вас внедрить поисковую систему на основе O (1)
на карте структуры данных. Таким образом, мы должны использовать индекс элемента как
его ключ для генерации ссылок. Это используется один раз во время обработки
входной файл.
Таким образом, я не уверен, что правильно понимаю концепцию карт / пар ключ-значение.