1
嗨我想創建一個ArrayList,它包含原始ArrayList中的對象的副本。我在這裏搜索,但不能足夠的早期帖子獲得幫助。下面是ArrayList我試圖做一個副本。需要一個ArrayList副本的對象的副本
ArrayList<Stuff> originallist = new ArrayList<Stuff>();
對不起,轉發!
嗨我想創建一個ArrayList,它包含原始ArrayList中的對象的副本。我在這裏搜索,但不能足夠的早期帖子獲得幫助。下面是ArrayList我試圖做一個副本。需要一個ArrayList副本的對象的副本
ArrayList<Stuff> originallist = new ArrayList<Stuff>();
對不起,轉發!
這並不是必須的,因爲它取決於如何複製對象。
假設的對象有一個名爲copyOf方法返回的對象的副本,你需要做的
ArrayList<Stuff> copy = new ArrayList<Stuff>(originallist.size());
for (Stuff s : originallist) {
copy.add(s.copyOf());
}
有許多地方的「copyOf」功能可能來自。如果一個對象實現了可複製的接口,那麼它可能是這個函數的一個來源(但有不同理由阻止接口)。有些類包含創建從現有的實例拷貝構造函數,在這種情況下,你可以在其他情況下做
ArrayList<Stuff> copy = new ArrayList<Stuff>(originallist.size());
for (Stuff s : originallist) {
copy.add(new Stuff(s));
}
,它可能必須用一種方法訪問字段進行(例如一個人對象,保持一個姓和名)
ArrayList<Person> copy = new ArrayList<Person>(originallist.size());
for (Person s : originallist) {
copy.add(new Person(s.getFirstName(),s.getLastName()));
}
要確定的是如何做到這一點,你應該看看API導遊的「東西」的對象。列表本身的實際複製很容易。
你讀過這裏給出的解釋:http://stackoverflow.com/questions/689370/java-collections-copy-list-i-dont-understand? – wiredolphin
現在我已閱讀它。如果我創建一個淺拷貝,它是否只包含對象內存中相同位置的引用,還是創建所有對象的拷貝? –
根據定義,淺拷貝包含對相同對象的引用。 –