假设我有两个List
并且我想将所有一个列表复制/分配到另一个列表,其中保留对原始列表的引用。我用这个代码
List<String> mylist = new List<String>();
List<String> another = getSomeList();
// I have to do
mylist.clear();
mylist.addAll(another);
这很好,但我的问题是,有没有更好的方法呢?
由于
答案 0 :(得分:1)
我不认为有一种更简单的方法。你可以实现自己的列表,例如setAll()
方法。
class MyArrayList<E> extends ArrayList<E> {
public void setAll(Collection<E> collection) {
clear();
addAll(collection);
}
}
但这只会将clear()
和addAll()
调用移动到另一种方法中。当然,客户肯定会使通话变得更轻松
MyArrayList<String> mylist = new MyArrayList<String>();
mylist.setAll(another);
但是以您使用特殊列表实现的代价。也许您只在类中使用此实现,并且您的api不会暴露您使用MyArrayList
。比它可能还好。我会像你已经做的那样去做。
答案 1 :(得分:0)
有没有更好的方法呢?
不,不适合您的规格。您可以删除 。mylist = another;
当您刚刚分配mylist.clear()
mylist = new List<String>();
所以你真正需要的是你addAll(another)
的最后一行。
答案 2 :(得分:-1)
您可以首先循环并将所有元素添加到另一个元素中:
for(String s : mylist){
another.add(s);
}