0

我正在寻找一种在 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。

不确定这是否可能,如果没有任何建议如何使其更快/更快是受欢迎的。

问候塞巴斯蒂安

4

1 回答 1

2

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

即使你想建立一个索引/地图,你仍然需要查看每个项目来建立地图......所以如果它是一次查找,蛮力可能只是要走的路。

如果这是一种常见的情况,您可以构建某种索引,例如 objb:obja 的 Map,假设每个 B 仅在一个 A...

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

于 2013-06-12T22:25:00.950 回答