Im пытается написать код, в котором вы выбираете два узла и создаете одно или несколько соединений между ними. Проблема в том, что я могу создать только одно соединение, соединение состоит из кромки и из-края, im используя указатель внутри хэш-карты.Как сделать несколько ссылок между двумя узлами (java)
Проблема в том, что я не могу понять, как сделать несколько связей между двумя узлами, она регистрирует только одну ссылку. Любой совет, как я могу это сделать, чтобы он регистрировал несколько ссылок? Нужно ли мне создавать другую карту?
public class ListGraph<G> implements Graph<G> {
private Map<G, List<ListEdge<G>>> nodes = new HashMap<G, List<ListEdge<G>>>();
public void addNode(G ny) {
if (!nodes.containsKey(ny))
nodes.put(ny, new ArrayList<ListEdge<G>>());
}
public void connect(G from, G to, String name, int weight) {
getEdgesFrom(from).add(new ListEdge<G>(to, weight, name));
getEdgesFrom(to).add(new ListEdge<G>(from, weight, name));
}
не может быть правильным? 'общественные пустоты addEdges (G от, G к, имя String, ИНТ вес) { \t \t если (getEdge (от, до)! = NULL) { \t \t \t getEdgesFrom (с) .add (новый ListEdge (до, вес, наименование)); \t \t \t getEdgesFrom (to) .add (новый ListEdge (из, вес, имя)); \t \t \t \t} \t \t \t еще возвращение; \t \t \t} ' (жаль, что я не знаю, как правильно редактировать) –
user1612725
Было бы хорошо, если бы вы показали код' getEdge() 'в вашем вопросе (я предполагаю, что' getEdgesFrom() 'и' getEdgesTo () 'будет аналогичным). – SJuan76
Здесь 'общественного ListEdge getEdge (G от, G к) { \t \t если \t \t \t бросить новый NoSuchElementException ("Ingen Sadan кивок!") (Nodes.containsKey (к)!); \t \t для (ListEdge край: getEdgesFrom (с)) \t \t \t, если (edge.getDestination() == с) \t \t \t \t возврата края; \t \t null null; \t} ' –
user1612725