Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android手机联系人搜索算法_Android_Algorithm_Search_Android Contacts - Fatal编程技术网

android手机联系人搜索算法

android手机联系人搜索算法,android,algorithm,search,android-contacts,Android,Algorithm,Search,Android Contacts,在我的应用程序中,我从手机中获取联系人列表。 我需要通过联系人列表实现上下文过滤/搜索机制 过滤条件: 根据数字键上的字母(所有可能的组合)按联系人姓名过滤 当我输入每个新的号码列表时,应该更改,只留下合适的联系人 就像这里 我输入“253”,应用程序就会找到ALE。 请帮我做这个 private List<Contact> contacts = new ArrayList<Contact>(); private List<Contact> sortCont

在我的应用程序中,我从手机中获取联系人列表。 我需要通过联系人列表实现上下文过滤/搜索机制

过滤条件: 根据数字键上的字母(所有可能的组合)按联系人姓名过滤

当我输入每个新的号码列表时,应该更改,只留下合适的联系人

就像这里

我输入“253”,应用程序就会找到ALE。 请帮我做这个

private List<Contact> contacts = new ArrayList<Contact>();
private List<Contact> sortContacts = new ArrayList<Contact>();
int textlength = 0;
TextView textView;

private class CustomTextWatcher implements TextWatcher {

    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        textlength = textView.getText().length();

        for (int i = 0; i < contacts.size(); i++) {
            if (textlength <= contacts.get(i).getName().length()) {
                            // need help here
                                                                       }}}}
private List contacts=new ArrayList();
private List sortContacts=new ArrayList();
int textlength=0;
文本视图文本视图;
私有类CustomTextWatcher实现TextWatcher{
public void onTextChanged(字符序列,int start,int before,
整数计数){
textlength=textView.getText().length();
对于(int i=0;i
但是,请注意,在您的情况下,您在每次搜索中检查许多前缀,一个可能的解决方案是保留表示字符串的数字的trie,trie的前导将指向它实际表示的字符串(可能不止一次)。

查找数字时,请使用前缀数字中的简单字符来获取所有相关字符串

如果名称列表没有经常更改,则trie可能是一种过度使用。您可以改为存储元组
(数字、字符串)
其中,
number
是表示数字的,而
string
是排序数组中的名称,用于获取带有所需前缀的第一个数字,并在找到后通过线性搜索返回所有名称。
但是请注意,在这种情况下插入一个新条目将是
O(n)
,因此如果经常发生这种情况,请避免使用这种解决方案,因为它预计不会有效率。

您可以使用a或a来获取具有特定perfix的所有字符串

但是,请注意,在您的情况下,您在每次搜索中检查许多前缀,一个可能的解决方案是保留表示字符串的数字的trie,trie的前导将指向它实际表示的字符串(可能不止一次)。
查找数字时,请使用前缀数字中的简单字符来获取所有相关字符串

如果名称列表没有经常更改,则trie可能是一种过度使用。您可以改为存储元组
(数字、字符串)
其中,
number
是表示数字的,而
string
是排序数组中的名称,用于获取带有所需前缀的第一个数字,并在找到后通过线性搜索返回所有名称。
但是请注意,在这种情况下插入一个新条目将是
O(n)
,因此,如果这种情况经常发生,请避免使用这种解决方案,因为它预计不会有效率