假設我有兩個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