我有两个不同大小的数组列表。如何取代:
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。
答案 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您可以通过多种方式执行此操作
首先清除然后添加所有
首先,如果您希望列表相同且一个列表中的操作反映在另一个列表中,则所有元素从一个列表复制到另一个列表,那么您可以将两者都指向同一列表,如
f = 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);