Два наиболее распространенных способа представления графа - это матрица смежности и списки смежности. Пусть n будет количеством узлов.
Матрица смежности A - это матрица логических значений n x n, так что A (i, j) = 1, если узлы i и j связаны, и 0, если они не связаны.
В представлении списков смежности для каждого узла вы ведете список узлов, к которым он подключен (смежен).
Вопрос теперь в том, что вы хотите сделать с графиком. Если это что-то простое, возможно, имеет смысл накатить свое. Если нет, вы можете покопаться в Интернете, чтобы найти библиотеку Java для работы с графиками. JGraphT было упомянуто.
Если вы хотите использовать матрицу смежности, вы можете легко представить ее в Java как двумерный массив значений типа bool или int. Вам нужно будет дать каждому узлу индекс. Самый простой способ
сделать это, чтобы сохранить ваши объекты Node в массиве, всегда в том же порядке. Таким образом, у вас действительно будет две структуры данных: массив узлов, которые представляют собой объекты, представляющие собой ваши узлы, и матрица смежности, которая ссылается на узлы по их индексам.
Как только вы заполнили матрицу, вы можете легко найти узел, который связан с большинством других узлов, сложив значения (0 и 1) во всех столбцах (или строках) и найдя максимум. Надеюсь, это поможет.