Просмотр исходного кода

update java Anagram's example based on feedback

Wirianto Djunaidi 12 лет назад
Родитель
Сommit
331c436b9b
1 измененных файлов: 15 добавлений и 15 удалений
  1. 15
    15
      assignments/java/anagram/example.java

+ 15
- 15
assignments/java/anagram/example.java Просмотреть файл

2
 
2
 
3
 public class Anagram {
3
 public class Anagram {
4
 
4
 
5
-    private AnagramSubject subject;
5
+    final private AnagramSubject anagramSubject;
6
 
6
 
7
     public Anagram(String word) {
7
     public Anagram(String word) {
8
-        subject = new AnagramSubject(word);
8
+        anagramSubject = new AnagramSubject(word);
9
     }
9
     }
10
 
10
 
11
     public List<String> match(List<String> candidates) {
11
     public List<String> match(List<String> candidates) {
12
         List<String> anagrams = new ArrayList<String>();
12
         List<String> anagrams = new ArrayList<String>();
13
 
13
 
14
         for (String candidate : candidates) {
14
         for (String candidate : candidates) {
15
-            if (subject.anagramOf(candidate)) {
15
+            if (anagramSubject.anagramOf(candidate)) {
16
                 anagrams.add(candidate);
16
                 anagrams.add(candidate);
17
             }
17
             }
18
         }
18
         }
20
         return anagrams;
20
         return anagrams;
21
     }
21
     }
22
 
22
 
23
-    class AnagramSubject {
23
+    static final class AnagramSubject {
24
 
24
 
25
-        private String subject;
26
-        private char[] fingerprint;
25
+        private String word;
26
+        final private char[] fingerprint;
27
 
27
 
28
-        public AnagramSubject(String word) {
29
-            this.subject = word;
30
-            this.fingerprint = canonicalize(word);
28
+        public AnagramSubject(String other) {
29
+            this.word = other;
30
+            this.fingerprint = canonicalize(other);
31
         }
31
         }
32
 
32
 
33
-        public boolean anagramOf(String word) {
34
-            return !duplicate(word) && Arrays.equals(fingerprint,(canonicalize(word)));
33
+        public boolean anagramOf(String other) {
34
+            return !duplicate(other) && Arrays.equals(fingerprint,canonicalize(other));
35
         }
35
         }
36
 
36
 
37
-        private boolean duplicate(String word) {
38
-            return subject.equalsIgnoreCase(word);
37
+        private boolean duplicate(String other) {
38
+            return word.equalsIgnoreCase(other);
39
         }
39
         }
40
 
40
 
41
-        private char[] canonicalize(String word) {
42
-            char[] chars = word.toLowerCase().toCharArray();
41
+        private char[] canonicalize(String other) {
42
+            char[] chars = other.toLowerCase().toCharArray();
43
             Arrays.sort(chars);
43
             Arrays.sort(chars);
44
             return chars;
44
             return chars;
45
         }
45
         }