我有一个调用的数组列表,它返回fetchContactName()
我的联系人列表中的所有姓名 (31),一个调用的数组列表fetchContactNumbers()
返回与 关联的所有电话号码 (31) fetchContactName()
,以及一个调用的数组列表,newList
它包含向我发送短信的所有号码 (6)。
我试图通过在 中newList
查找相同的号码来更改电话号码fetchContactNumbers()
。当有匹配时,我会索引 in 中的位置fetchContactNumbers()
并使用该索引在fetchContactName()
. 从那里,我将根据索引位置将数字替换newList
为名称。fetchContactName()
这是我制作的一个示例,按上述方式执行:
上面示例的问题是,当我将其应用于 my 时listview
,列表中只有一个元素更改为名称。更奇怪的是,newList.get(3)
是唯一一个改名的。不在newList
岗位上0, 1, 2, 4 and 5
。
根据其他人的建议,我如何使用 aHashMap
来给出与上面给出的示例相同的预期结果?有人告诉我使用fetchContactNumbers()
and然后使用 与fetchContactNames()
进行比较,但我找不到任何来源来实现这一点。Hashmap
HashMap
newList
更新:
这是我的 HashMap 的工作代码,但结果仍然与上面相同:
for (String str : fetchContactNames()) {
contactNameNew += str + " ";
}
for (String str2 : fetchContactNumbers()) {
contactNumberNew += str2 + " ";
}
//String to split
String temp[];
String temp2[];
String delimiter = " ";
temp = contactNameNew.split(delimiter);
temp2 = contactNumberNew.split(delimiter);
HashMap<String, String> contacts = new HashMap<String, String>();
contacts.put(contactNameNew, contactNumberNew);
for(int i = 0; i < fetchContactNames().size(); i++){
contacts.put(temp[i], temp2[i]);
}
Iterator<Entry<String, String>> iterator = contacts.entrySet().iterator();
while(iterator.hasNext()){
Entry<String, String> entry = iterator.next();
int position = getPosition(newlist, entry.getValue());
if (newlist.contains(entry.getValue())) {
newlist.set(position, entry.getKey());
}
}