diff options
author | 2014-06-19 16:12:34 +0900 | |
---|---|---|
committer | 2014-06-23 22:58:46 +0900 | |
commit | fdebf4005f849a4a2875b686d239a817ca043842 (patch) | |
tree | 40a4728b0bd9d4fa199ca8f4b2fb0abb2fa869c2 /java/src/com/android/inputmethod/latin/SuggestedWords.java | |
parent | e83e79cb055fbfe5171fb79a2224e7d9e2cda4d2 (diff) | |
download | latinime-fdebf4005f849a4a2875b686d239a817ca043842.tar.gz latinime-fdebf4005f849a4a2875b686d239a817ca043842.tar.xz latinime-fdebf4005f849a4a2875b686d239a817ca043842.zip |
[CS2] Refactor a bit removeDups
This way is more understandable, and also supporting an
external string is helping for future refactorings
Bug: 13238601
Change-Id: I4ebeed46eb0b35011164946af71ac257c6449ddb
Diffstat (limited to 'java/src/com/android/inputmethod/latin/SuggestedWords.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/SuggestedWords.java | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 72461e17a..8e78e970f 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -316,10 +316,6 @@ public class SuggestedWords { return mDebugString; } - public int codePointCount() { - return mCodePointCount; - } - public int codePointAt(int i) { return mWord.codePointAt(i); } @@ -333,23 +329,28 @@ public class SuggestedWords { } } - // TODO: Consolidate this method and StringUtils.removeDupes() in the future. - public static void removeDups(ArrayList<SuggestedWordInfo> candidates) { - if (candidates.size() <= 1) { + // This will always remove the higher index if a duplicate is found. + public static void removeDups(final String typedWord, + ArrayList<SuggestedWordInfo> candidates) { + if (candidates.isEmpty()) { return; } - int i = 1; - while (i < candidates.size()) { - final SuggestedWordInfo cur = candidates.get(i); - for (int j = 0; j < i; ++j) { - final SuggestedWordInfo previous = candidates.get(j); - if (cur.mWord.equals(previous.mWord)) { - candidates.remove(cur.mScore < previous.mScore ? i : j); - --i; - break; - } + if (!TextUtils.isEmpty(typedWord)) { + removeSuggestedWordInfoFrom(typedWord, candidates, 0); + } + for (int i = 0; i < candidates.size(); ++i) { + removeSuggestedWordInfoFrom(candidates.get(i).mWord, candidates, i); + } + } + + private static void removeSuggestedWordInfoFrom(final String word, + final ArrayList<SuggestedWordInfo> candidates, final int startIndex) { + for (int i = startIndex + 1; i < candidates.size(); ++i) { + final SuggestedWordInfo previous = candidates.get(i); + if (word.equals(previous.mWord)) { + candidates.remove(i); + --i; } - ++i; } } } |