2012-05-13 66 views
1

我試圖在我的應用程序中製作一個選項卡系統,它允許用戶過濾哪些內容在每個選項卡中顯示(即用戶選擇要隱藏的項目)。所有項目都可以在一個數組中使用:ArrayList<ItemInfo> mItems。在我TabInfo類,我想有這樣的事情:Java多個陣列共享父母的相同內容

public class TabInfo { 
    public int numItems; 
    public ArrayList<ItemInfo> content; 
} 

content陣列只是mItems過濾下來。問題在於我必須保留許多ItemInfo的副本,並且會浪費大量內存(這些選項卡之間可能存在重複的項目),並且它們都只包含在mItems中。

有沒有辦法在TabInfo中過濾mItems而不保留重複?

回答

3

除非你想讓content陣列包含你的ItemInfo的拷貝,否則它們不會。 ArrayLists存儲對象的引用,而不是直接存儲對象。

將同一對象插入多個ArrayList時,不會複製對象,存儲多個引用。

所以你不必做任何事情。 (或者,如果在存儲對象之前複製/克隆對象,則需要停止這樣做。)

+0

啊,我只需要'content.add(mItems.get(i))'。謝謝! – nebkat

+0

是的,你可以做到這一點。 – Mat