将两个列表结构链接在一起

时间:2012-08-02 04:28:57

标签: java list hashmap hash

我有两个清单。 List AList B

列表A的每个元素都有List B的元素列表。我已填充了两个列表,但列表A元素中列表的填充仍有待完成。

它们都具有可以进行连接的属性;说

列表B中的元素;如果字段1作为列表A中元素的id,则它将从列表A添加到该元素。

现在我正在使用另一个for循环中的for循环。有点像这样的

for(each A)
{
for(each B)
{
if(fieldsmatch)
{
add B to the List of the element from A
}
}

如果我从列表A中哈希所有元素然后在浏览列表B中的每个元素时执行查找,会不会更好。

感谢。

我可以使用HashMap。

1 个答案:

答案 0 :(得分:1)

我会颠倒逻辑。从B创建一个hashmap,将每个id映射到具有该id的元素列表。然后,对于A的每个元素,按ID查找列表并将其分配给A元素中的字段。

Map<IdType, List<B>> map = new HashMap<IdType, List<B>>();
for(each b in B) {
    List<B> list = map.get(b.id);
    if (list == null) {
        list = new ArrayList<B>();
        map.put(b.id, list);
    }
    list.add(b);
}
for(each a in A) {
    a.b_list = map.get(a.id);
    // if you need an empty list instead of null:
    if (a.b_list == null) {
        a.b_list = new ArrayList<B>();
    }
}