我正在尝试在我的应用程序中创建一个标签系统,允许用户过滤每个标签中显示的内容(即用户选择要隐藏的项目)。所有项目都以数组形式提供:ArrayList<ItemInfo> mItems
。在我的TabInfo
课程中,我希望有这样的内容:
public class TabInfo {
public int numItems;
public ArrayList<ItemInfo> content;
}
content
数组仅mItems
已过滤掉。这个问题是我必须保留许多ItemInfo
的副本,它会浪费大量内存(选项卡之间可能存在重复的项目)并且它们都包含在{{1 }}。
有没有办法在mItems
中过滤mItems
而不保留重复项?
答案 0 :(得分:3)
除非您正在做一些事情以使content
数组包含ItemInfo
的副本,否则它们不会。 ArrayLists存储对象的引用,而不是直接存储对象。
将同一个对象插入多个ArrayList
时,不会复制该对象,而是存储多个引用。
所以你不必做任何事情。 (或者,如果您在存储对象之前复制/克隆对象,则需要停止这样做。)