0

我有两个清单。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 吗?

4

1 回答 1

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>();
    }
}
于 2012-08-02T04:35:48.393 回答