我正在尝试在我的应用程序中创建一个标签系统,该系统允许用户过滤每个标签中显示的内容(即用户选择要隐藏的项目)。所有项目均位于数组中:ArrayList<ItemInfo> mItems。在我的TabInfo类中,我想要这样的东西:

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


只是content过滤的mItems数组。问题在于,我必须保留许多ItemInfo的副本,这将浪费大量内存(选项卡之间可能有重复项),并且全部都包含在mItems中。

有没有一种方法可以在mItems中保留已过滤的TabInfo而不保留重复项?

最佳答案

除非您要使content数组包含ItemInfo的副本,否则它们不会。 ArrayList存储对对象的引用,而不直接存储对象。

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

因此,您无需执行任何操作。 (或者,如果要在存储对象之前复制/克隆对象,则需要停止这样做。)

10-08 03:13