我正在Java中搜索一种直接访问包含给定对象的列表中对象的方法。
我的意思是这样的
List<ObjectA> list = new ArrayList<ObjectA>();
Objectb objb = new ObjectB();
list.add(new ObjectA(objb, new ObjectB()));
ObjectA containsObjB;
boolean gotit= false;
for(ObjectA a: list)
{
for(ObjectB pObjB: a.getObjBs())
{
if(pObjB.equals(objb)
{
containsObjB = a;
gotit = true;
break;
}
if(gotit) break;
}
}
这将是漫长的过程,但由于此操作将非常时间关键,我想知道是否有可能映射列表,以便我可以即时访问正确的ObjectA。
不确定这是否可行,如果没有任何建议,欢迎如何快速/快速。
问候 塞巴斯蒂安
答案 0 :(得分:2)
好吧,如果您使用列表,并且列表尚未排序或按已知顺序排列,则必须查看每个项目。
即使您想构建索引/地图,您仍然需要查看每个项目来构建地图......所以如果是一次性查找,那么蛮力可能只是一种方式
如果这是常见的事情,你可以构建某种索引,比如objb:obja的Map,假设每个B只在一个A ...
或者您可以更改代码,使其不是列表列表,而是为查找优化的集合。