6

我有两个不同大小的数组列表。如何从此更换:

ArrayList<String> s = new ArrayList<String>();
ArrayList<String> f = new ArrayList<String>();
        s.add("Nepal");
        s.add("Korea");
        s.add("Sri Lanka");
        s.add("India");
        s.add("Pakistan");
        s.add("China");
        s.add("Australia");
        s.add("Bhutan");

        f.add("London");
        f.add("New York");
        f.add("Mumbai");
        f.add("sydeny");
for(int i=0;i<s.size();i++){
           // Collections.copy(f, s);
            f.addAll(s);
            Log.d("TAG", "Sources---" + s.get(i));
           Log.d("TAG", "Dest---" + f.get(i));
        }

这两个我都试过了。但不能仅替换现有数组列表中的追加或复制。我的目标是将原始数组完全替换为新的数组列表。

4

4 回答 4

15

你可以先做clear()然后做addAll(s);

clear()之后,您的数组列表将为空。

编辑:

正如@Luggi 评论的那样,clear()如果列表很大,这不是一个好的选择,而是简单地将您的f引用指向带有集合作为参数的新 ArrayList:示例:

f = new ArrayList(s);
于 2013-06-28T04:33:29.820 回答
2

在此处输入链接描述 在此处输入链接描述您可以通过多种方式执行此操作

  1. 先清除再全部添加

    f.clear();
    f.addAll(S);

  2. 通过第一种方式,如果您希望两个列表都相同并且一个列表中的操作反映在另一个列表中,则所有元素都从一个列表复制到另一个列表,那么您可以将两者都指向同一个列表,例如

    f = s;

  3. 通过将所有元素添加到新列表中来初始化新列表。

    f = 新的 ArrayList(s);

于 2013-06-28T04:35:31.703 回答
1
    ArrayList<String> s = new ArrayList<String>();
    ArrayList<String> f = new ArrayList<String>();

    s.add("Nepal");
    s.add("Korea");
    s.add("Sri Lanka");
    s.add("India");
    s.add("Pakistan");
    s.add("China");
    s.add("Australia");
    s.add("Bhutan");

    f.add("London");
    f.add("New York");
    f.add("Mumbai");
    f.add("sydeny");

    f.clear();
    f.addAll(s);

如果您想将 f 中的元素添加到 s 以下将起作用

    s.addAll(f);

就这样。为什么for在代码中使用循环?

于 2013-06-28T04:36:14.380 回答
1

你可以试试这个:

首先将所有元素添加sf

f.addAll(s);

然后只保留f其中存在的元素s

f.retainAll(s);

于 2013-06-28T04:37:02.307 回答