我需要在大量对象上实现搜索方法。策略如下: 有两个类,比如说,
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引用为值。
有更好的解决方法吗?
答案 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