パフォーマンスが重要な場合は、TreeSetまたはTreeMapを使用して国名を保持することができます。また、指定した文字列で始まる国を識別するために、次のように使用できます。
NavigableMap<String, String> countries = new TreeMap<String, String>();
countries.put("australia", "Australia");
...
String userText = ...
String tmp = userText.toLower();
List<String> hits = new ArrayList<String>();
Map.Entry<String, String> entry = countries.ceilingEntry(tmp);
while (entry != null && entry.getKey().startsWith(tmp)) {
hits.add(entry.getValue());
entry = map.higherEntry(entry.getKey());
}
// hits now contains all country names starting with the value of `userText`,
// ignoring differences in letter case.
これは、Nは、国の数であるO(logN)
です。これと対照的に、コレクションの線形検索はO(N)
です。ありがとうございました。私は 'contains'を思い出しました –
Gah!最初に見つかった –
もちろん、 "オーストラリア" .contains( "AUS") 'はfalseを返します。 –