我有两个清单。 List A
和List 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。
答案 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>();
}
}