如何在java中将一个arraylist替换为另一个具有不同大小的arraylist

时间:2013-06-28 04:31:53

标签: java arraylist

我有两个不同大小的数组列表。如何取代:

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));
        }

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

4 个答案:

答案 0 :(得分:14)

您可以先clear()再做addAll(s);

clear()之后你的arraylist将是空的。

编辑:

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

f = new ArrayList(s);

答案 1 :(得分:2)

enter link description here enter link description here您可以通过多种方式执行此操作

  1. 首先清除然后添加所有

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

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

    f = s;

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

    f = new ArrayList(s);

答案 2 :(得分: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.addAll(f);

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

答案 3 :(得分:1)

你可以尝试一下:

首先将s中的所有元素添加到f

f.addAll(s);

然后仅保留f中存在的s

中的元素

f.retainAll(s);