1

我正在尝试在我的应用程序中创建一个选项卡系统,它允许用户过滤每个选项卡中显示的内容(即用户选择要隐藏的项目)。所有项目都在一个数组中可用:ArrayList<ItemInfo> mItems. 在我的TabInfo课堂上,我想要这样的东西:

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

content数组刚刚mItems过滤掉。这样做的问题是我必须保留许多ItemInfo's 的副本,这会浪费大量内存(选项卡之间可能有重复的项目)并且它们都只包含在mItems.

有没有办法mItemsTabInfo不保留重复项的情况下进行过滤?

4

1 回答 1

3

除非您正在做一些事情来使content数组包含您ItemInfo的 s 的副本,否则它们不会。ArrayLists 存储对对象的引用,而不是直接存储对象。

当您将同一个对象插入多个ArrayLists 时,不会复制该对象,而是存储多个引用。

所以你不必做任何事情。(或者,如果您在存储对象之前复制/克隆对象,则需要停止这样做。)

于 2012-05-13T10:01:12.710 回答