From f969594e3a5c611556f1d78210caf93f8be835ba Mon Sep 17 00:00:00 2001 From: Mohammed Hannechi Date: Wed, 27 Nov 2019 22:59:51 +0100 Subject: [PATCH] reformat code and upgrade gradle version --- gradle/wrapper/gradle-wrapper.jar | Bin 51010 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- .../com/monotonic/map_visualiser/Console.java | 46 ++++------ .../map_visualiser/HashMapVisualiser.java | 84 ++++++++---------- .../com/monotonic/map_visualiser/Sample.java | 38 ++++---- .../map_visualiser/TreeMapVisualiser.java | 28 +++--- .../com/monotonic/map_visualiser/Type.java | 36 +++----- .../com/monotonic/map_visualiser/BadHash.java | 15 ++-- .../monotonic/map_visualiser/HashMapEg.java | 9 +- .../monotonic/map_visualiser/TreeMapEg.java | 9 +- 10 files changed, 103 insertions(+), 166 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2322723c7ed5f591adfa4c87b6c51932f591249a..fd7e590e5154e82211909581e71018372134fb27 100644 GIT binary patch delta 25503 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 R3t_5;wo&5X*j4>{_&ze=o diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7dbe9d6..027b98b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 18 22:22:28 BST 2015 +#Wed Nov 27 22:57:21 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-all.zip diff --git a/src/main/java/com/monotonic/map_visualiser/Console.java b/src/main/java/com/monotonic/map_visualiser/Console.java index def7fe5..1901c18 100644 --- a/src/main/java/com/monotonic/map_visualiser/Console.java +++ b/src/main/java/com/monotonic/map_visualiser/Console.java @@ -5,8 +5,7 @@ import java.io.PrintStream; import java.util.stream.IntStream; -public class Console -{ +public class Console { private static final String ANSI_COLOUR_RESET = "\u001B[0m"; private static final String CLEAR = "\033[H\033[2J"; private static final String ANSI_RED = "\u001B[31m"; @@ -16,71 +15,56 @@ public class Console private final PrintStream out; private final InputStream in; - public Console() - { + public Console() { this(System.out, System.in); } - public Console(final PrintStream out, final InputStream in) - { + public Console(final PrintStream out, final InputStream in) { this.out = out; this.in = in; } - public void await() - { - try - { + public void await() { + try { in.read(); - } - catch (IOException e) - { + } catch (IOException e) { e.printStackTrace(); } } - public void clear() - { + public void clear() { print(CLEAR); } - public void println(final Object value) - { + public void println(final Object value) { out.println(value); } - public void print(final Object value) - { + public void print(final Object value) { out.print(value); } - public void printf(final String format, final Object... args) - { + public void printf(final String format, final Object... args) { out.printf(format, args); } - public void red() - { + public void red() { print(ANSI_RED); } - public void yellow() - { + public void yellow() { print(ANSI_YELLOW); } - public void green() - { + public void green() { print(ANSI_GREEN); } - public void resetColour() - { + public void resetColour() { print(ANSI_COLOUR_RESET); } - public void indent(final int index) - { + public void indent(final int index) { IntStream.range(0, index).forEach(i -> print('\t')); } } diff --git a/src/main/java/com/monotonic/map_visualiser/HashMapVisualiser.java b/src/main/java/com/monotonic/map_visualiser/HashMapVisualiser.java index 3745479..e74a4fd 100644 --- a/src/main/java/com/monotonic/map_visualiser/HashMapVisualiser.java +++ b/src/main/java/com/monotonic/map_visualiser/HashMapVisualiser.java @@ -5,16 +5,14 @@ import java.util.IntSummaryStatistics; import java.util.stream.Stream; -public class HashMapVisualiser -{ +public class HashMapVisualiser { private static final Field thresholdField; private static final Field tableField; private static final Field nextField; private static final Field leftField; private static final Field rightField; - static - { + static { Type node = new Type("java.util.HashMap$Node"); Type treeNode = new Type("java.util.HashMap$TreeNode"); Type hashMap = new Type(HashMap.class); @@ -28,54 +26,48 @@ public class HashMapVisualiser private final Console console; - public HashMapVisualiser(final Console console) - { + public HashMapVisualiser(final Console console) { this.console = console; } - public void visualise(final HashMap map) - { + public void visualise(final HashMap map) { Object[] table = (Object[]) Type.get(tableField, map); console.printf( - "Size: %d, Resize: %s, Bin Count: %d%n", - map.size(), Type.get(thresholdField, map), table.length); + "Size: %d, Resize: %s, Bin Count: %d%n", + map.size(), Type.get(thresholdField, map), table.length); final IntSummaryStatistics collisions = Stream.of(table) - .mapToInt(row -> - { - if (row == null) + .mapToInt(row -> { - console.println("[]"); - return 0; - } + if (row == null) { + console.println("[]"); + return 0; + } - switch (row.getClass().getSimpleName()) - { - case "TreeNode": - return visualiseTree(row); + switch (row.getClass().getSimpleName()) { + case "TreeNode": + return visualiseTree(row); - case "Node": - return visualiseList(row); + case "Node": + return visualiseList(row); - default: - throw new IllegalArgumentException("Unknown type of row"); - } - }) - .summaryStatistics(); + default: + throw new IllegalArgumentException("Unknown type of row"); + } + }) + .summaryStatistics(); console.printf( - "Collisions: Max: %d, Ave: %s, Total: %d%n", - collisions.getMax(), - collisions.getAverage(), - collisions.getSum()); + "Collisions: Max: %d, Ave: %s, Total: %d%n", + collisions.getMax(), + collisions.getAverage(), + collisions.getSum()); } - private int visualiseList(Object node) - { + private int visualiseList(Object node) { final Object next = Type.get(nextField, node); - if (next == null) - { + if (next == null) { console.green(); printNode(node); console.resetColour(); @@ -84,8 +76,7 @@ private int visualiseList(Object node) console.red(); int index = 0; - while (node != null) - { + while (node != null) { console.indent(index); printNode(node); @@ -97,34 +88,29 @@ private int visualiseList(Object node) return index; } - private int visualiseTree(final Object node) - { + private int visualiseTree(final Object node) { console.yellow(); final int collisions = visualiseSubTree(node, 0); console.resetColour(); return collisions; } - private int visualiseSubTree(final Object node, int index) - { + private int visualiseSubTree(final Object node, int index) { console.indent(index); printNode(node); return 1 - + visualiseBranch(node, index, leftField) - + visualiseBranch(node, index, rightField); + + visualiseBranch(node, index, leftField) + + visualiseBranch(node, index, rightField); } - private void printNode(final Object node) - { + private void printNode(final Object node) { console.printf("[%s]\n", node); } - private int visualiseBranch(final Object node, final int index, final Field field) - { + private int visualiseBranch(final Object node, final int index, final Field field) { Object branch = Type.get(field, node); - if (branch != null) - { + if (branch != null) { return visualiseSubTree(branch, index + 1); } return 0; diff --git a/src/main/java/com/monotonic/map_visualiser/Sample.java b/src/main/java/com/monotonic/map_visualiser/Sample.java index 8c6f567..0609c4f 100644 --- a/src/main/java/com/monotonic/map_visualiser/Sample.java +++ b/src/main/java/com/monotonic/map_visualiser/Sample.java @@ -5,46 +5,46 @@ import java.util.HashMap; /** - * A simple program that shows at the terminal, + * A simple program that shows at the terminal, * the structure of sample HashMap and TreeMap instances. - * + * * @author Manoel Campos da Silva Filho -*/ + */ public class Sample { private final Console console; - - public Sample(){ - this.console = new Console(); + + public Sample() { + this.console = new Console(); printTreeMap(); printHashMap(); } - - private void printTreeMap(){ + + private void printTreeMap() { TreeMap treeMap1 = new TreeMap<>(); insertSampleMapData(treeMap1); System.out.println(treeMap1.getClass().getSimpleName()); - new TreeMapVisualiser(console).visualise(treeMap1); - System.out.println(); + new TreeMapVisualiser(console).visualise(treeMap1); + System.out.println(); } - - private void printHashMap(){ + + private void printHashMap() { HashMap hashMap1 = new HashMap<>(); insertSampleMapData(hashMap1); System.out.println(hashMap1.getClass().getSimpleName()); new HashMapVisualiser(console).visualise(hashMap1); - System.out.println(); + System.out.println(); } - - private void insertSampleMapData(Map map){ + + private void insertSampleMapData(Map map) { map.put("name", "Manoel Campos"); - map.put("country", "Brazil"); + map.put("country", "Brazil"); map.put("age", 35); map.put("height", 1.8); map.put("gender", 'M'); - map.put("site", "http://github.com/manoelcampos"); + map.put("site", "http://github.com/manoelcampos"); } - - public static void main(String args[]){ + + public static void main(String args[]) { new Sample(); } } \ No newline at end of file diff --git a/src/main/java/com/monotonic/map_visualiser/TreeMapVisualiser.java b/src/main/java/com/monotonic/map_visualiser/TreeMapVisualiser.java index fbdc710..e98b81d 100644 --- a/src/main/java/com/monotonic/map_visualiser/TreeMapVisualiser.java +++ b/src/main/java/com/monotonic/map_visualiser/TreeMapVisualiser.java @@ -3,8 +3,7 @@ import java.lang.reflect.Field; import java.util.TreeMap; -public class TreeMapVisualiser -{ +public class TreeMapVisualiser { private static final boolean BLACK = true; private static final boolean RED = false; @@ -13,8 +12,7 @@ public class TreeMapVisualiser private static final Field leftField; private static final Field rightField; - static - { + static { Type entry = new Type("java.util.TreeMap$Entry"); Type treeMap = new Type(TreeMap.class); @@ -26,13 +24,11 @@ public class TreeMapVisualiser private final Console console; - public TreeMapVisualiser(final Console console) - { + public TreeMapVisualiser(final Console console) { this.console = console; } - public void visualise(final TreeMap map) - { + public void visualise(final TreeMap map) { console.printf("Size: %d, %n", map.size()); Object root = Type.get(rootField, map); @@ -40,12 +36,10 @@ public void visualise(final TreeMap map) visualiseSubTree(root, 0); } - private int visualiseSubTree(final Object node, int index) - { + private int visualiseSubTree(final Object node, int index) { console.indent(index); final boolean colour = (boolean) Type.get(colorField, node); - if (colour == RED) - { + if (colour == RED) { console.red(); } @@ -53,15 +47,13 @@ private int visualiseSubTree(final Object node, int index) console.resetColour(); return 1 - + visualiseBranch(node, index, leftField) - + visualiseBranch(node, index, rightField); + + visualiseBranch(node, index, leftField) + + visualiseBranch(node, index, rightField); } - private int visualiseBranch(final Object node, final int index, final Field field) - { + private int visualiseBranch(final Object node, final int index, final Field field) { Object branch = Type.get(field, node); - if (branch != null) - { + if (branch != null) { return visualiseSubTree(branch, index + 1); } return 0; diff --git a/src/main/java/com/monotonic/map_visualiser/Type.java b/src/main/java/com/monotonic/map_visualiser/Type.java index 0b71c2f..57b0a95 100644 --- a/src/main/java/com/monotonic/map_visualiser/Type.java +++ b/src/main/java/com/monotonic/map_visualiser/Type.java @@ -2,49 +2,35 @@ import java.lang.reflect.Field; -class Type -{ +class Type { private final Class cls; - Type(final String name) - { - try - { + Type(final String name) { + try { cls = Class.forName(name); - } - catch (ClassNotFoundException e) - { + } catch (ClassNotFoundException e) { throw new IllegalStateException(e); } } - Type(final Class cls) - { + Type(final Class cls) { this.cls = cls; } - Field getField(final String fieldName) - { - try - { + Field getField(final String fieldName) { + try { final Field field = cls.getDeclaredField(fieldName); field.setAccessible(true); return field; - } - catch (NoSuchFieldException e) - { + } catch (NoSuchFieldException e) { throw new IllegalStateException(e); } } - static Object get(final Field field, final Object object) - { - try - { + static Object get(final Field field, final Object object) { + try { return field.get(object); - } - catch (IllegalAccessException e) - { + } catch (IllegalAccessException e) { throw new IllegalStateException(e); } } diff --git a/src/test/java/com/monotonic/map_visualiser/BadHash.java b/src/test/java/com/monotonic/map_visualiser/BadHash.java index 71b70f0..3116e8b 100644 --- a/src/test/java/com/monotonic/map_visualiser/BadHash.java +++ b/src/test/java/com/monotonic/map_visualiser/BadHash.java @@ -1,18 +1,15 @@ package com.monotonic.map_visualiser; -public class BadHash -{ +public class BadHash { private String value; private int hash; - public BadHash(final String value, final int hash) - { + public BadHash(final String value, final int hash) { this.value = value; this.hash = hash; } - public boolean equals(final Object o) - { + public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; @@ -21,13 +18,11 @@ public boolean equals(final Object o) return value.equals(badHash.value); } - public int hashCode() - { + public int hashCode() { return hash; } - public String toString() - { + public String toString() { return value; } } diff --git a/src/test/java/com/monotonic/map_visualiser/HashMapEg.java b/src/test/java/com/monotonic/map_visualiser/HashMapEg.java index 983f45f..65d18b3 100644 --- a/src/test/java/com/monotonic/map_visualiser/HashMapEg.java +++ b/src/test/java/com/monotonic/map_visualiser/HashMapEg.java @@ -2,11 +2,9 @@ import java.util.HashMap; -public class HashMapEg -{ +public class HashMapEg { - public static void main(String[] args) - { + public static void main(String[] args) { Console console = new Console(); console.clear(); @@ -27,8 +25,7 @@ public static void main(String[] args) console.await();*/ final HashMap treeified = new HashMap<>(); - for (int i = 0; i < 20; i++) - { + for (int i = 0; i < 20; i++) { final String value = String.valueOf(i); treeified.put(new BadHash(value, 1), value); console.clear(); diff --git a/src/test/java/com/monotonic/map_visualiser/TreeMapEg.java b/src/test/java/com/monotonic/map_visualiser/TreeMapEg.java index 500b81f..ead1022 100644 --- a/src/test/java/com/monotonic/map_visualiser/TreeMapEg.java +++ b/src/test/java/com/monotonic/map_visualiser/TreeMapEg.java @@ -2,16 +2,13 @@ import java.util.TreeMap; -public class TreeMapEg -{ - public static void main(String[] args) - { +public class TreeMapEg { + public static void main(String[] args) { final Console console = new Console(); final TreeMapVisualiser visualiser = new TreeMapVisualiser(console); final TreeMap treeified = new TreeMap<>(); - for (int i = 0; i < 26; i++) - { + for (int i = 0; i < 26; i++) { final String value = String.valueOf(i); treeified.put(value, value); console.clear();