将多个源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


问题答案:

您将必须编写自己的列表实现,该列表将使用两个列表进行初始化,并将所有方法的执行委派给这两个列表,以确保变异操作。