Я ищу встроенную структуру данных Java, которая лучше всего подходила бы для обработки соседних комнат. У меня есть сетка / пол, разделенные на случайно сгенерированные комнаты, например:
+ + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
И я ищу структуру данных, в которой было бы проще / быстрее всего сохранить эту сетку и обозначить, какие комнаты соседствуют с какими комнатами.
Есть ли у кого-нибудь предложения?
Благодарность
2 ответа
Вы можете использовать график для представления комнат как узлов, а соседних отношений как ребер.
Вы можете представлять графики разными способами. В этом случае, поскольку связь является разреженной, лучше использовать список смежности вместо матрицы смежности.
В Java граф можно представить с помощью Map<Room,List<Room>>
. По сути, это то, что он говорит: это отображение из Room
в список его соседних Room
s.
В качестве альтернативы, если вы предпочитаете работать с основными целыми числами и массивами, вы можете использовать представление матрицы смежности boolean[][] adj
, где adj[i][j] == true
тогда и только тогда, когда комната i
и комната j
являются соседи.
Вам просто нужно хранить:
- противоположные углы каждой комнаты
- граф / матрица смежности графа, образованного комнатами как узлами и смежностью как ребром.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].