3

我需要在大量对象上实现搜索方法。策略如下:有两个类,比如说,

A{
String a1,
String a2,
...
}
and
B{
String b1,
String b2,
...
}

和两个ArrayLists带有每种类型的对象。
我需要找到一个A对象在哪里A.a1 == B.b1。如果没有找到,我需要找到一个A对象 whereA.a2 == B.b2等等..(这里==代表基于值的相等,因为可能存在其他类型的属性)

尽可能快地做到这一点的最佳方法是什么?到目前为止,我唯一能想到的(除了遍历数组)是创建许多 HashMap,其中属性值作为键,对象引用作为值。

有没有更好的方法来解决这个问题?

4

3 回答 3

1

您应该选择 HashMap 方式。由于散列,查找非常有效。并且内存开销不应该太大,因为只有引用存储在不同的地图中。

于 2012-10-30T09:43:18.157 回答
1

我认为你可以在单循环中实现这一点。迭代时还要检查其他条件是否为真并存储此类对象。如果你最终没有发现A.a1.equals(B.b1)A.a2.equals(B.b2)不需要额外的循环。

 initalize object to store A.a2.equals(B.b2)
 for(size)
  { 
     if(A.a1.equals(B.b1))
      {
       //Found break;
      }
     else if(A.a2.equals(B.b2))
       {
        //Store this since if we end up not finding then we can use this
       }
  }
于 2012-10-30T09:55:16.480 回答
-1

尽我所能深入研究Apache BeanUtils,我能为你找到的就是这个。您可以尝试将整个 bean 一次性加载到地图中,而不是在类中的每个字段上使用反射 API/getter

BeanUtils.describe(Object bean) - 返回一个Map

于 2012-10-30T09:49:57.750 回答