3

我有一个调用的数组列表,它返回fetchContactName()我的联系人列表中的所有姓名 (31),一个调用的数组列表fetchContactNumbers()返回与 关联的所有电话号码 (31) fetchContactName(),以及一个调用的数组列表,newList它包含向我发送短信的所有号码 (6)。

我试图通过在 中newList查找相同的号码来更改电话号码fetchContactNumbers()。当有匹配时,我会索引 in 中的位置fetchContactNumbers()并使用该索引在fetchContactName(). 从那里,我将根据索引位置将数字替换newList为名称。fetchContactName()

这是我制作的一个示例,按上述方式执行:

http://pastebin.com/pApHNkXa

上面示例的问题是,当我将其应用于 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());
        }
    }
4

2 回答 2

0

我认为如果我更改您的代码并回答会更好...

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));
    }
}
}
于 2012-06-11T03:49:35.620 回答
0

你的代码正在工作,你放在这里http://pastebin.com/pApHNkXa我在 android 中尝试过它,它的工作正常,它给出的输出为五、二、七、三。

于 2012-06-11T08:16:31.593 回答