Java 如何比较Hashmap中的2个ArrayList?
我有一个名为Java 如何比较Hashmap中的2个ArrayList?,java,android,arraylist,hashmap,Java,Android,Arraylist,Hashmap,我有一个名为fetchContactName()的数组列表,它返回我的联系人列表中的所有姓名(31);一个名为fetchContactNumbers()的数组列表,它返回与fetchContactName()关联的所有电话号码(31),还有一个名为newList的数组列表,其中包含发送给我短信的所有号码(6) 我试图通过在fetchContactNumbers()中查找相同的号码来更改newList中的电话号码。当有匹配项时,我会在fetchContactNumbers()中索引该位置,并使用该
fetchContactName()
的数组列表,它返回我的联系人列表中的所有姓名(31);一个名为fetchContactNumbers()
的数组列表,它返回与fetchContactName()
关联的所有电话号码(31),还有一个名为newList
的数组列表,其中包含发送给我短信的所有号码(6)
我试图通过在fetchContactNumbers()
中查找相同的号码来更改newList
中的电话号码。当有匹配项时,我会在fetchContactNumbers()
中索引该位置,并使用该索引在fetchContactName()
中获取相同位置的名称。从那里,我将根据索引位置将newList
中的数字替换为fetchContactName()
中的名称
这是我制作的一个示例,其执行如上所述:
上述示例的问题在于,当我将其应用于我的列表视图时,列表中只有一个元素被更改为名称。更奇怪的是,newList.get(3)
是唯一一个更改为名称的。在位置0、1、2、4和5处不newList
根据其他人的建议,我如何使用HashMap
给出与上述示例相同的预期结果?我被告知在Hashmap
中使用fetchContactNumbers()
和fetchContactNames()
,然后使用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());
}
}
for(字符串str:fetchContactNames()){
contactNameNew+=str+“”;
}
for(字符串str2:fetchContactNumber()){
contactNumberNew+=str2+“”;
}
//要拆分的字符串
字符串温度[];
字符串temp2[];
字符串分隔符=”;
temp=contactNameNew.split(分隔符);
temp2=联系人号码新拆分(分隔符);
HashMap contacts=新的HashMap();
contacts.put(contactnamew,contactNumberNew);
对于(int i=0;i
我想如果我更改您的代码并回答您的问题会更好
import java.util.ArrayList;
import java.util.HashMap;
public class StringT {
public static void main(String[] args) {
// alpha would represent fetchContactNames()
ArrayList<String> alpha = new ArrayList<String>();
// bravo would represent fetchContactNumbers()
HashMap<String, String> bravo = new HashMap<String, String>();
// charlie would represent newList
ArrayList<String> charlie = new ArrayList<String>();
bravo.put("1", "One"); charlie.add("5");
bravo.put("2", "Two"); charlie.add("1");
bravo.put("3", "Three"); charlie.add("3");
bravo.put("4", "Four"); charlie.add("4");
bravo.put("5", "Five"); charlie.add("2");
// this will print charlie just as you see above
for(int i = 0; i < charlie.size(); i ++){
System.out.println(charlie.get(i));
}
System.out.println("---------------------");
// this will print charlie with the numbers replaced as names
for(int i = 0; i < charlie.size(); i++){
String value;
if((value = bravo.get(charlie.get(i))) != null){
charlie.set(i, value);
}
}
for(int i = 0; i < charlie.size(); i ++){
System.out.println(charlie.get(i));
}
}
}
import java.util.ArrayList;
导入java.util.HashMap;
公共类StringT{
公共静态void main(字符串[]args){
//alpha将表示fetchContactNames()
ArrayList alpha=新的ArrayList();
//bravo将代表FetchContactNumber()
HashMap bravo=新的HashMap();
//查理将代表新名单
ArrayList charlie=新的ArrayList();
太好了,放1,查理,加5;
太好了,放两个,查理,加上一个;
太棒了,放三个,查理加三个;
太棒了,放四个,查理加四个;
太好了,放五个,查理加上两个;
//这将打印charlie,正如上面所示
对于(int i=0;i
你的代码正在工作,你放在这里,我在android上试用过,它工作正常,输出为五、二、七、三。我不知道如何在我的代码中实现这一点。我有2个用于hashmap的arraylist,有人告诉我应该将它们转换为字符串,然后将其与我的newList arraylist进行比较。我修改了您的代码并替换了它。此外,我选择数字作为“键”,以便您在根据数字进行搜索时快速访问。如果你想搜索一个人的名字,并得到他的联系电话号码,那么这个名字是一个更好的“钥匙”。希望有帮助!另外,如果“listView”与您的文章相关,您能否告诉我更多关于“listView”的含义……您的“if”陈述不正确,如果您没有使用listView,那么将很难理解这个问题。我遇到的问题是,六个名字中只有一个改变了。代码似乎只是在检查一件事,然后停止。嗯……据我所知,你的问题是,“如果”是正确的……也会产生与粘贴代码相同的输出。。无论如何,listView的问题可能是它没有更新..[link]可能会有所帮助,因为我主要使用iOS列表,而问题通常是刷新..出于某种原因,它在我的listView中不起作用。我正在创建一个模仿短信收件箱的应用程序。现在,它在我的手机上显示联系人的电话号码,但我试图用实际的联系人姓名替换它们。我不知道为什么,但它只是没有正确地为我工作,没有错误。