国番号が含まれていてもいなくてもよい電話番号のリストがあります。私は常に国別コードを含むバックエンドサービスから番号を取得します。だから私は最適にバックエンドサービスから来た数に一致する数を見つけました。文字列内の部分文字列を最適に検索するjava
は、今私がやっているものです:接触マップは、このような連絡先のマップがある
for(String number : backendNumbers){
for(Map.Entry<String, String> entry : contactMap.entrySet()){
if(number.endsWith(entry.getKey()) && entry.getKey().length() > MINIMUM_CONTACT_LENGTH){
Log.i(TAG, "Found name for "+entry.getKey()+" : "+entry.getKey()+":"+entry.getValue());
break;
}
}
}
は<は「01710111111」、「いくつかの名前は」> = - >このキーは、または含んでも含まなくてもよいです国コード。ほとんどの場合、そうではありません。
「+8801710111111」のように常に国コードを含むバックエンドから番号を取得したとき。
このアプローチの問題は、そのマップが必要なたびにコンタクトマップを生成するオーバーヘッドがあることです。また、各番号のバックエンドからN個の数字を取得する場合は、名前を見つけるためにコンタクトマップ全体をループする必要があります。
ここで私は何ができますか?どんな提案も感謝します。
悲しいことに、国コードは必ずしも3文字ではありません.1,2,3または4文字にすることができます。 – Shaheed