Qua*_*Oat 8 java algorithm list data-structures
给定两个列表,每个列表保持相同的对象类型,我想根据一些属性值在两个匹配的列表之间找到对象.
例如,来自List1的对象L1Obj匹配来自List2,L2Obj的对象,如果L1Obj.a == L2Obj.a AND L1Obj.b == L2Obj.c AND L1Obj.c == L2Obj.c
这些属性不是该类的唯一属性,而是唯一标识列表中对象所需的属性.
我的问题是 - 实现这一目标的最佳方法是什么?
一种方法是基于列表构造HashMaps,使用a + b + c的concataned String值作为索引对象的键.这样我就可以遍历第一个列表,并尝试使用相同的密钥在第二个列表中查找对象.
这听起来怎么样?有没有更好的方法来实现这一目标?
非常感谢所有帮助!
更新:
好的,实际上我还需要更多.找到匹配后,我想用L2Obj的属性覆盖属性L1Obj.x,L1Obj.y,L1Obj.z.HashSet听起来很适合找到匹配,但如果我是对的,它实际上不允许我访问这些匹配.
我该怎么办?
你想看看执行的对象equals(Object)
,并hashCode()
只考虑到自己关心的领域?如果是这样,您可以HashSet
从第一个列表创建一个新的,然后retainAll()
在第二个列表中调用传递.
如果他们没有实现equals(Object)
并且hashCode()
关于您关心的属性,您可以创建一个TreeSet
并传入一个Comparator
查看您关注的属性.