Implement the person comparator :
[Persons_Comparator.git] / src / Utils.java
diff --git a/src/Utils.java b/src/Utils.java
new file mode 100644 (file)
index 0000000..b551cb1
--- /dev/null
@@ -0,0 +1,56 @@
+import java.util.ArrayList;
+import java.util.ListIterator;
+
+public class Utils {
+    public static void displayArrayList(ArrayList arrayList) {
+        ListIterator iter = arrayList.listIterator();
+        Integer i = 0;
+        while (iter.hasNext()) {
+            System.out.println(i.toString() + " " + iter.next());
+            i++;
+        }
+    }
+
+    public static void computeDistanceFrom(Person personFrom, ArrayList<Person> personArrayList) {
+        if (!personArrayList.contains(personFrom))
+            personArrayList.add(personFrom);
+        ListIterator<Person> iter = personArrayList.listIterator();
+        while (iter.hasNext()) {
+            Person personCursor = iter.next();
+            personCursor.setDistanceFromReference(personFrom.distanceTo(personCursor));
+        }
+    }
+
+    /**
+     * @param a
+     * @param b
+     * @param c
+     * @return
+     */
+    private static int minimum(int a, int b, int c) {
+        return Math.min(Math.min(a, b), c);
+    }
+
+    /**
+     * @param lhs
+     * @param rhs
+     * @return
+     */
+    public static int computeLevenshteinDistance(CharSequence lhs, CharSequence rhs) {
+        int[][] distance = new int[lhs.length() + 1][rhs.length() + 1];
+
+        for (int i = 0; i <= lhs.length(); i++)
+            distance[i][0] = i;
+        for (int j = 1; j <= rhs.length(); j++)
+            distance[0][j] = j;
+
+        for (int i = 1; i <= lhs.length(); i++)
+            for (int j = 1; j <= rhs.length(); j++)
+                distance[i][j] = minimum(
+                        distance[i - 1][j] + 1,
+                        distance[i][j - 1] + 1,
+                        distance[i - 1][j - 1] + ((lhs.charAt(i - 1) == rhs.charAt(j - 1)) ? 0 : 1));
+
+        return distance[lhs.length()][rhs.length()];
+    }
+}