1

我有一个独特的短信问题:

最终目标是将列表中显示的电话号码替换为联系人姓名

(这些都是字符串数组列表)

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>

Map 基本上使用<key, value>结构,因此不是ArrayList1包含“名称”和ArrayList2包含“数字”,而是采取一种Map<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 中读取和写入数据时,应该多使用一个数组列表。所以有可能任何名称都可以替换 i+ 索引处的任何数字,这还不是进程........

于 2012-06-10T06:40:45.113 回答