b551cb1bb2f4541f98abb5e28d478e3ce617185d
[Persons_Comparator.git] / src / Utils.java
1 import java.util.ArrayList;
2 import java.util.ListIterator;
3
4 public class Utils {
5 public static void displayArrayList(ArrayList arrayList) {
6 ListIterator iter = arrayList.listIterator();
7 Integer i = 0;
8 while (iter.hasNext()) {
9 System.out.println(i.toString() + " " + iter.next());
10 i++;
11 }
12 }
13
14 public static void computeDistanceFrom(Person personFrom, ArrayList<Person> personArrayList) {
15 if (!personArrayList.contains(personFrom))
16 personArrayList.add(personFrom);
17 ListIterator<Person> iter = personArrayList.listIterator();
18 while (iter.hasNext()) {
19 Person personCursor = iter.next();
20 personCursor.setDistanceFromReference(personFrom.distanceTo(personCursor));
21 }
22 }
23
24 /**
25 * @param a
26 * @param b
27 * @param c
28 * @return
29 */
30 private static int minimum(int a, int b, int c) {
31 return Math.min(Math.min(a, b), c);
32 }
33
34 /**
35 * @param lhs
36 * @param rhs
37 * @return
38 */
39 public static int computeLevenshteinDistance(CharSequence lhs, CharSequence rhs) {
40 int[][] distance = new int[lhs.length() + 1][rhs.length() + 1];
41
42 for (int i = 0; i <= lhs.length(); i++)
43 distance[i][0] = i;
44 for (int j = 1; j <= rhs.length(); j++)
45 distance[0][j] = j;
46
47 for (int i = 1; i <= lhs.length(); i++)
48 for (int j = 1; j <= rhs.length(); j++)
49 distance[i][j] = minimum(
50 distance[i - 1][j] + 1,
51 distance[i][j - 1] + 1,
52 distance[i - 1][j - 1] + ((lhs.charAt(i - 1) == rhs.charAt(j - 1)) ? 0 : 1));
53
54 return distance[lhs.length()][rhs.length()];
55 }
56 }