我正在尝试在我的应用程序中创建一个标签系统,该系统允许用户过滤每个标签中显示的内容(即用户选择要隐藏的项目)。所有项目均位于数组中:ArrayList<ItemInfo> mItems
。在我的TabInfo
类中,我想要这样的东西:
public class TabInfo {
public int numItems;
public ArrayList<ItemInfo> content;
}
只是
content
过滤的mItems
数组。问题在于,我必须保留许多ItemInfo
的副本,这将浪费大量内存(选项卡之间可能有重复项),并且全部都包含在mItems
中。有没有一种方法可以在
mItems
中保留已过滤的TabInfo
而不保留重复项? 最佳答案
除非您要使content
数组包含ItemInfo
的副本,否则它们不会。 ArrayList存储对对象的引用,而不直接存储对象。
当您将同一对象插入多个ArrayList
时,不会复制该对象,而是存储多个引用。
因此,您无需执行任何操作。 (或者,如果要在存储对象之前复制/克隆对象,则需要停止这样做。)