3

fetchContactName()連絡先リスト内のすべての名前 (31) を返す arraylist と呼ばれる、 に関連付けfetchContactNumbers()られたすべての電話番号 (31) を返すarraylist と呼ばれる、テキスト メッセージ (6) を送信したすべての番号をfetchContactName()含む arraylist と呼ばれる呼び出しがあります。newList

newListで同じ番号を探しての電話番号を変更しようとしていましたfetchContactNumbers()。一致した場合は、 の位置にインデックスfetchContactNumbers()を付け、そのインデックスを使用して の同じ位置にある名前を取得しfetchContactName()ます。そこから、インデックス付けされた位置に従って、数字をnewList名前に置き換えます。fetchContactName()

これは、上記のように実行する私が作成した例です。

http://pastebin.com/pApHNkXa

上記の例の問題は、それを my に適用するとlistview、リスト内の 1 つの要素だけが名前に変更されることです。さらに奇妙なことnewList.get(3)に、名前に変わったのは だけです。newList位置ではありません0, 1, 2, 4 and 5

他の人が示唆しているように、 a を使用しHashMapて上記の例と同じ期待される結果を得るにはどうすればよいですか? fetchContactNumbers()を使用し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());
        }
    }
4

2 に答える 2

0

あなたのコードはあなたがここに置いたように動作していますhttp://pastebin.com/pApHNkXa私はそれをアンドロイドで試しました、そしてその動作は5、2、7、3として出力を与えます。

于 2012-06-11T08:16:31.593 に答える
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 に答える