我有一个调用的数组列表,它返回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()进行比较,但我找不到任何来源来实现这一点。HashmapHashMapnewList
更新:
这是我的 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());
}
}