aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-06-26 22:55:51 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-26 22:55:51 -0700
commit78a8d5b6bcbfd9be93e384cada85ecf51fd0b91b (patch)
tree7cade8137abf9e96b730593bbb3bb7ca7c7799f9 /java/src
parent30447239e81ebc4d3634eb9f7212e572e1934c6a (diff)
parent9da0027b386c23b83c2f9b0121bc15fa15306e3a (diff)
downloadlatinime-78a8d5b6bcbfd9be93e384cada85ecf51fd0b91b.tar.gz
latinime-78a8d5b6bcbfd9be93e384cada85ecf51fd0b91b.tar.xz
latinime-78a8d5b6bcbfd9be93e384cada85ecf51fd0b91b.zip
Merge "Implement a comparator for SuggestedWordInfos."
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 4a1c897ca..b69ea3595 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -26,6 +26,8 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
@@ -384,6 +386,21 @@ public class Suggest {
return suggestionsList;
}
+ private static class SuggestedWordInfoComparator implements Comparator<SuggestedWordInfo> {
+ // This comparator ranks the word info with the higher frequency first. That's because
+ // that's the order we want our elements in.
+ @Override
+ public int compare(final SuggestedWordInfo o1, final SuggestedWordInfo o2) {
+ if (o1.mScore > o2.mScore) return -1;
+ if (o1.mScore < o2.mScore) return 1;
+ if (o1.mCodePointCount < o2.mCodePointCount) return -1;
+ if (o1.mCodePointCount > o2.mCodePointCount) return 1;
+ return o1.mWord.toString().compareTo(o2.mWord.toString());
+ }
+ }
+ private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator =
+ new SuggestedWordInfoComparator();
+
public boolean addWord(final SuggestedWordInfo wordInfo,
final int dicTypeId, final int dataType,
final ArrayList<SuggestedWordInfo> suggestions, final String consideredWord) {
@@ -399,11 +416,8 @@ public class Suggest {
&& suggestions.get(prefMaxSuggestions - 1).mScore >= score) return true;
final int length = wordInfo.mCodePointCount;
while (pos < suggestions.size()) {
- final int curScore = suggestions.get(pos).mScore;
- if (curScore < score
- || (curScore == score && length < suggestions.get(pos).mCodePointCount)) {
+ if (sSuggestedWordInfoComparator.compare(wordInfo, suggestions.get(pos)) < 0)
break;
- }
pos++;
}
if (pos >= prefMaxSuggestions) {