使用保留引用分配列表

时间:2014-12-13 11:24:51

标签: java list arraylist

假设我有两个List并且我想将所有一个列表复制/分配到另一个列表,其中保留对原始列表的引用。我用这个代码

List<String> mylist = new List<String>();
List<String> another = getSomeList();

// I have to do
mylist.clear();
mylist.addAll(another);

这很好,但我的问题是,有没有更好的方法呢?

由于

3 个答案:

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