/** * @param vertexValues is the list of vertex values. * @param adjacencyMatrix is the adjacency matrix with the connections from the graph. * @param vertexIndex is the index of the vertex value to build the connection list. * @return a list of vertex values based on the connectivity of the given index on the adjacency * matrix. */ private static List<String> makeConnections( String[] vertexValues, boolean[][] adjacencyMatrix, int vertexIndex) { Preconditions.checkArgument(vertexValues != null, "The vertex values must be provided."); Preconditions.checkArgument(adjacencyMatrix != null, "The adjacency matrix must be provided."); Preconditions.checkArgument( vertexIndex >= 0, "The vertex index must be greater than or equals to 0."); List<String> connections = new SinglyLinkedList<>(); for (int i = 0; i < adjacencyMatrix.length; i++) { if (adjacencyMatrix[vertexIndex][i]) { connections.add(vertexValues[i]); } } return connections; }
@Override public String toString() { StringBuilder builder = new StringBuilder(); for (int i = 0; i < vertexes.length; i++) { if (i == rootIndex) { builder.append("-> "); } builder.append(vertexes[i].getValue()); builder.append(": "); List<Type> connections = vertexes[i].getConnections(); Iterator<Type> it = connections.iterator(); while (it.hasNext()) { Type value = it.next(); builder.append(value); if (it.hasNext()) { builder.append(", "); } } builder.append("\n"); } return builder.toString(); }