summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/graph/AdjacencyMap.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-04-13 18:40:41 -0400
committerBen Culkin <scorpress@gmail.com>2020-04-13 18:40:41 -0400
commitd4ca769e542b2489b1e23cfcbdc3a0b7275b87cd (patch)
tree1653a7399f97fb0c63ce62e3f60fd830d5c37f70 /base/src/main/java/bjc/utils/graph/AdjacencyMap.java
parent2ac2e31a56ae59ee582e43a90c3495f86dd9ee7a (diff)
Cleanup pass
Cleanup pass to uniformize things
Diffstat (limited to 'base/src/main/java/bjc/utils/graph/AdjacencyMap.java')
-rw-r--r--base/src/main/java/bjc/utils/graph/AdjacencyMap.java61
1 files changed, 33 insertions, 28 deletions
diff --git a/base/src/main/java/bjc/utils/graph/AdjacencyMap.java b/base/src/main/java/bjc/utils/graph/AdjacencyMap.java
index ee360bd..d818ca1 100644
--- a/base/src/main/java/bjc/utils/graph/AdjacencyMap.java
+++ b/base/src/main/java/bjc/utils/graph/AdjacencyMap.java
@@ -20,24 +20,25 @@ import bjc.utils.funcutils.FuncUtils;
* @author ben
*
* @param <T>
- * The type of the nodes in the graph
+ * The type of the nodes in the graph
*/
public class AdjacencyMap<T> {
/**
* Create an adjacency map from a stream of text
*
* @param stream
- * The stream of text to read in
+ * The stream of text to read in
*
* @return An adjacency map defined by the text
*/
public static AdjacencyMap<Integer> fromStream(final InputStream stream) {
- if(stream == null) throw new NullPointerException("Input source must not be null");
+ if (stream == null)
+ throw new NullPointerException("Input source must not be null");
/* Create the adjacency map. */
AdjacencyMap<Integer> adjacency;
- try(Scanner input = new Scanner(stream)) {
+ try (Scanner input = new Scanner(stream)) {
input.useDelimiter("\n");
int vertexCount;
@@ -47,7 +48,7 @@ public class AdjacencyMap<T> {
try {
/* First, read in number of vertices. */
vertexCount = Integer.parseInt(possible);
- } catch(final NumberFormatException nfex) {
+ } catch (final NumberFormatException nfex) {
String msg = String.format(
"The first line must contain the number of vertices. %s is not a valid number",
possible);
@@ -59,18 +60,19 @@ public class AdjacencyMap<T> {
throw imex;
}
- if(vertexCount <= 0)
- throw new InputMismatchException("The number of vertices must be greater than 0");
+ if (vertexCount <= 0)
+ throw new InputMismatchException(
+ "The number of vertices must be greater than 0");
final IList<Integer> vertices = new FunctionalList<>();
- FuncUtils.doTimes(vertexCount, (vertexNo) -> vertices.add(vertexNo));
+ FuncUtils.doTimes(vertexCount, vertexNo -> vertices.add(vertexNo));
adjacency = new AdjacencyMap<>(vertices);
final IHolder<Integer> row = new Identity<>(0);
- input.forEachRemaining((strang) -> {
+ input.forEachRemaining(strang -> {
readRow(adjacency, vertexCount, row, strang);
});
}
@@ -79,24 +81,25 @@ public class AdjacencyMap<T> {
}
/* Read a row of edges. */
- private static void readRow(final AdjacencyMap<Integer> adjacency, final int vertexCount,
- final IHolder<Integer> row, final String strang) {
+ private static void readRow(final AdjacencyMap<Integer> adjacency,
+ final int vertexCount, final IHolder<Integer> row, final String strang) {
final String[] parts = strang.split(" ");
- if(parts.length != vertexCount) {
- String msg = String.format("Must specify a weight for all %d vertices", vertexCount);
+ if (parts.length != vertexCount) {
+ String msg = String.format("Must specify a weight for all %d vertices",
+ vertexCount);
throw new InputMismatchException(msg);
}
int column = 0;
- for(final String part : parts) {
+ for (final String part : parts) {
int weight;
try {
weight = Integer.parseInt(part);
- } catch(final NumberFormatException nfex) {
+ } catch (final NumberFormatException nfex) {
String msg = String.format("%d is not a valid weight.", part);
final InputMismatchException imex = new InputMismatchException(msg);
@@ -110,7 +113,7 @@ public class AdjacencyMap<T> {
column++;
}
- row.transform((rowNumber) -> rowNumber + 1);
+ row.transform(rowNumber -> rowNumber + 1);
}
/** The backing storage of the map */
@@ -120,10 +123,11 @@ public class AdjacencyMap<T> {
* Create a new map from a set of vertices
*
* @param vertices
- * The set of vertices to create a map from
+ * The set of vertices to create a map from
*/
public AdjacencyMap(final IList<T> vertices) {
- if(vertices == null) throw new NullPointerException("Vertices must not be null");
+ if (vertices == null)
+ throw new NullPointerException("Vertices must not be null");
vertices.forEach(vertex -> {
final IMap<T, Integer> row = new FunctionalMap<>();
@@ -148,7 +152,7 @@ public class AdjacencyMap<T> {
sourceValue.forEach((targetKey, targetValue) -> {
final int inverseValue = adjacency.get(targetKey).get(sourceKey);
- if(targetValue != inverseValue) {
+ if (targetValue != inverseValue) {
result.replace(false);
}
});
@@ -161,24 +165,24 @@ public class AdjacencyMap<T> {
* Set the weight of an edge.
*
* @param source
- * The source node of the edge.
+ * The source node of the edge.
* @param target
- * The target node of the edge.
+ * The target node of the edge.
* @param weight
- * The weight of the edge.
+ * The weight of the edge.
*/
public void setWeight(final T source, final T target, final int weight) {
- if(source == null) {
+ if (source == null) {
throw new NullPointerException("Source vertex must not be null");
- } else if(target == null) {
+ } else if (target == null) {
throw new NullPointerException("Target vertex must not be null");
}
- if(!adjacency.containsKey(source)) {
+ if (!adjacency.containsKey(source)) {
String msg = String.format("Source vertex %s isn't present in map", source);
throw new IllegalArgumentException(msg);
- } else if(!adjacency.containsKey(target)) {
+ } else if (!adjacency.containsKey(target)) {
String msg = String.format("Target vertex %s isn't present in map", target);
throw new IllegalArgumentException(msg);
@@ -208,10 +212,11 @@ public class AdjacencyMap<T> {
* Convert an adjacency map back into a stream.
*
* @param sink
- * The stream to convert to.
+ * The stream to convert to.
*/
public void toStream(final OutputStream sink) {
- if(sink == null) throw new NullPointerException("Output source must not be null");
+ if (sink == null)
+ throw new NullPointerException("Output source must not be null");
final PrintStream outputPrinter = new PrintStream(sink);