将多个源ArrayList同步到单个目标列表中
问题内容:
需要从两个不同的表中加载项目列表(ArrayList)。由于复杂的Hibernate映射,它们不能作为一个ArrayList加载。因此,它们由类定义中的两个不同的Hibernate包分别加载。当我使用它们时,我想合并为一个列表。所以我正在考虑编写如下函数,
private List<Item> combinedList = new ArrayList<Item>();
public List<Item> getCombinedList()
{
combinedList.clear();
combinedList.addAll(getList1());
combinedList.addAll(getList2());
return combinedList;
}
getCombinedList()将用于显示项目,并在其他只读操作中使用。任何删除,修改或添加操作仍将在List1和List2中执行(因为它将由Hibernate处理)。
我的问题是,当发生更改时,如何有效地将getCombinedList()与源列表同步?
更新:每次调用getCombinedList()来获取最新项都是低效的。我正在寻找一种同步基础数据结构的方法combinedList
。
问题答案:
您将必须编写自己的列表实现,该列表将使用两个列表进行初始化,并将所有方法的执行委派给这两个列表,以确保变异操作。