summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/inputmethod/LocaleUtils.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/inputmethod/LocaleUtils.java b/services/core/java/com/android/server/inputmethod/LocaleUtils.java
index 4958eceb4fb5..7a6853a25e5b 100644
--- a/services/core/java/com/android/server/inputmethod/LocaleUtils.java
+++ b/services/core/java/com/android/server/inputmethod/LocaleUtils.java
@@ -22,10 +22,10 @@ import android.annotation.Nullable;
import android.icu.util.ULocale;
import android.os.LocaleList;
import android.text.TextUtils;
+import android.util.ArrayMap;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
import java.util.Locale;
@@ -155,7 +155,7 @@ final class LocaleUtils {
}
final int numPreferredLocales = preferredLocales.size();
- final HashMap<String, ScoreEntry> scoreboard = new HashMap<>();
+ final ArrayMap<String, ScoreEntry> scoreboard = new ArrayMap<>();
final byte[] score = new byte[numPreferredLocales];
final ULocale[] preferredULocaleCache = new ULocale[numPreferredLocales];
@@ -197,7 +197,11 @@ final class LocaleUtils {
}
}
- final ScoreEntry[] result = scoreboard.values().toArray(new ScoreEntry[scoreboard.size()]);
+ final int numEntries = scoreboard.size();
+ final ScoreEntry[] result = new ScoreEntry[numEntries];
+ for (int i = 0; i < numEntries; ++i) {
+ result[i] = scoreboard.valueAt(i);
+ }
Arrays.sort(result);
for (final ScoreEntry entry : result) {
dest.add(sources.get(entry.mIndex));