1

固有の SMS の問題があります。

最終的な目標は、リストに表示されている電話番号を連絡先の名前に置き換えることです

(これらはすべて文字列配列リストです)

ArrayList3には、電話番号の選択を表す 6 つの要素が含まれています。 ArrayList2には、利用可能なすべての電話番号を表す 31 個の要素が含まれています。 ArrayList1には、すべての電話番号の名前を同じ順序で表す 31 個の要素がそれぞれArrayList2 に含まれています。

それらすべてをこの効果と比較するにはどうすればよいですか。

Arraylist3 の要素がArrayList2の要素と等しい場合、ArrayList3 をArrayList2の同じ位置にコピーし、 ArrayList3に配置します。」

大まかに、私がやろうとしているのは、 ArrayList3 の要素をArrayList2の同一の要素と一致させることです。そこから、ArrayList2 の位置を使用してArrayList1同じ位置を取得し、その位置 ( ArrayList1 )のデータをArrayList3にコピーします。

これを達成する方法についてのアイデアはありますか?

4

3 に答える 3

2

ArrayList<String>ArrayList1とArrayList2には使用しないでください。データをとして結合しますMap<String,String>

マップは基本的に構造を使用するため、 「名前」と「数値」<key, value>を含む代わりに、アプローチを取り、から取得した値(つまり、数値)を見つけます。ArrayList1ArrayList2Map<name,number>ArrayList3Map

地図を見る

于 2012-06-10T07:04:11.367 に答える
1

私は次のことを試しましたが、うまくいきます:

ArrayList<String> arrayList1 = new ArrayList<String>();
    ArrayList<String> arrayList2 = new ArrayList<String>();
    ArrayList<String> arrayList3 = new ArrayList<String>();
    arrayList1.add("Welcome");
    arrayList1.add("Home");

    arrayList2.add("1");
    arrayList2.add("2");

    arrayList3.add("2");



    for(int i=0; i< arrayList3.size(); i++){
        if(arrayList2.contains(arrayList3.get(i))){
            int index = arrayList2.indexOf(arrayList3.get(i));
            arrayList3.set(i, arrayList1.get(index));
            //Toast.makeText(this, "Found " + arrayList3.get(i), Toast.LENGTH_LONG).show();
        }
    }
于 2012-06-10T07:29:11.500 に答える
0

基本的に、ArrayList1 (名前を持つ) と ArrayList2 (番号を持つ) を同じ順序で使用して、ArrayList3 (更新されたインデックス) で数値を名前に変換しようとしています。

同じ ArrayList3 でデータを読み書きするときは、もう 1 つの配列リストを使用する必要があります。そのため、名前のいずれかが、まだプロセスではない i+ インデックスの任意の番号を置き換える可能性があります........

于 2012-06-10T06:40:45.113 に答える