У меня есть сеть «сущностей» (Объекты), каждая из которых содержит информацию о том, что представляют собой «следующие» (следующие) сущности, которые могут быть любыми, что между ними нет. Кроме того, «следующие» объекты содержат информацию для своих «следующих объектов» (которая может быть совершенно новой или предыдущей, которая только что связана с ней).В Java, какая коллекция наиболее эффективна для сети данных?
Значит, A знает, где B a C, B знает, где A, D и E ist и так далее. Обратите внимание на двустороннее направление A и B. Нет ограничений на количество или направление соединений.
Какова будет самая лучшая (наиболее эффективная) коллекция для имитации такой сети, если мне придется искать объекты очень часто (много тысяч раз)? Какая была бы лучшая коллекция, если бы я искал строки вместо объектов? Есть ли разница? Будет ли другой тип сущности быстрее?
Спасибо всем!
Редактировать: То, что я пытаюсь сделать, - это сохранить огромное количество «воспоминаний» (исторических событий в симуляции) в сети/графике, затем найти определенную память и следовать соединениям соседей и соседей соседей и т. д., ища «комбинации» воспоминаний, которые соответствуют моему шаблону поиска. Например, я проверяю, существуют ли сущности «A, B, C и снова A» в этом порядке.
С точки зрения теории графов, какие операции вы хотите выполнять на вашем графике? (найти путь между двумя узлами? подключенными компонентами? если подключены 2 узла .. и т. д.) – Adrian
Ну ... совершенно разные действия, на самом деле. Я хочу иметь возможность искать определенный узел (используя его имя/ключ), а затем перейти к его непосредственным соседям («nextEntity») и соседям соседей. Пока я делаю это, мне нужно проверить «расстояния» между узлами, что, скорее всего, будет атрибутом, прикрепленным к списку «соседей», который имеет каждый узел. Ad Я также хочу сравнить атрибуты узлов. Проблема в том, что это не «дерево», которое в конечном итоге заканчивается, поскольку взаимосвязь между узлами позволяет кругам - узлы А и В могут быть связаны в обоих направлениях, нет отношений родитель-потомок. – Cos
Попробуйте Map>, чтобы сопоставить узел своим детям. В качестве альтернативы вы можете иметь Узел со списком детей внутри класса Node. Затем вы можете выполнять всевозможные операции над ними. –
Adrian