对对象列表中的多个属性执行搜索

时间:2012-10-30 09:26:39

标签: java search

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

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

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

尽可能快地制作此内容的最佳方法是什么?到目前为止,我唯一能想到的事情(除了迭代数组)是创建一些HashMaps,其属性值为键,Object引用为值。

有更好的解决方法吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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
       }
  }

答案 2 :(得分:-1)

尽我所能挖掘Apache BeanUtils,我能找到的就是这个。您可以尝试使用

一次性将整个bean加载到地图中,而不是在类中的每个字段上使用反射API / getter。

BeanUtils.describe(Object bean) - 返回Map