Java - 直接访问包含给定值的列表中的对象

时间:2013-06-12 22:19:42

标签: java performance arraylist

我正在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。

不确定这是否可行,如果没有任何建议,欢迎如何快速/快速。

问候 塞巴斯蒂安

1 个答案:

答案 0 :(得分:2)

好吧,如果您使用列表,并且列表尚未排序或按已知顺序排列,则必须查看每个项目。

即使您想构建索引/地图,您仍然需要查看每个项目来构建地图......所以如果是一次性查找,那么蛮力可能只是一种方式

如果这是常见的事情,你可以构建某种索引,比如objb:obja的Map,假设每个B只在一个A ...

或者您可以更改代码,使其不是列表列表,而是为查找优化的集合。