假设我有两个List
s,并且我想将一个列表中的所有列表复制/分配给另一个列表,其中保留对原始列表的引用。我使用此代码指定列表并保留参考
List<String> mylist = new List<String>();
List<String> another = getSomeList();
// I have to do
mylist.clear();
mylist.addAll(another);
这工作正常,但我的问题是,有没有更好的方法来做到这一点?
感谢
假设我有两个List
s,并且我想将一个列表中的所有列表复制/分配给另一个列表,其中保留对原始列表的引用。我使用此代码指定列表并保留参考
List<String> mylist = new List<String>();
List<String> another = getSomeList();
// I have to do
mylist.clear();
mylist.addAll(another);
这工作正常,但我的问题是,有没有更好的方法来做到这一点?
感谢
我不认为有一个更简单的方法。你可以实现你自己的列表,例如一种setAll()
方法。
class MyArrayList<E> extends ArrayList<E> {
public void setAll(Collection<E> collection) {
clear();
addAll(collection);
}
}
但这只是移动的clear()
和addAll()
invokation到另一种方法。当然从客户何卫青它使通话更容易
MyArrayList<String> mylist = new MyArrayList<String>();
mylist.setAll(another);
,但在你使用一个特殊列表实现的价格。也许你只能在类中使用这个实现,并且你的API不会公开你使用了MyArrayList
。比它可能会好。我会按照你已经做的方式去做。
我衷心感谢您的回答 – 2014-12-13 11:49:08
有没有更好的方式来做到这一点?
不,不符合您的规格。您可以删除
。mylist = another;
而且也没有必要呼吁mylist.clear()
当你刚分配mylist = new List<String>();
所以真的,所有你需要的是最后一行你addAll(another)
哪里。
Collections.copy(dest,src),你在找? http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#copy%28java.util.List,%20java.util.List%29 – sol4me 2014-12-13 11:28:15
让我们来说说例如List1 = [1,2,3]和List2 = [4,5,6]因此根据你什么是预期的输出? – sol4me 2014-12-13 11:35:08
@ sol4me'mylist = [4,5,6]'但有自己的参考 – 2014-12-13 11:36:48