gpt4 book ai didi

java - 如何在两个列表之间找到匹配的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:57 25 4
gpt4 key购买 nike

给定两个列表,每个列表都包含相同的对象类型,我想根据一些属性值在两个列表之间找到匹配的对象。

例如如果 L1Obj.a == L2Obj.a AND L1Obj.b == L2Obj.c AND L1Obj.c == L2Obj.c,则 List1 中的对象 L1Obj 与 List2 中的对象 L2Obj 匹配

这些属性不是类的唯一属性,而是唯一标识列表中的对象所需的全部属性。

我的问题是 - 实现此目标的最佳方法是什么?

一种方法是基于列表构造 HashMap,将 a+b+c 的串联字符串值用作索引对象的键。这样我就可以遍历第一个列表,并尝试使用相同的键在第二个列表中查找对象。

这听起来怎么样?有没有更好的方法来实现这一点??

非常感谢所有帮助!


更新:

好吧,其实我还需要一点。找到匹配项后,我想用 L2Obj 的属性覆盖 L1Obj.x、L1Obj.y、L1Obj.z。 HashSet 听起来很适合查找匹配项,但如果我是对的,它实际上不允许我访问这些匹配项。

我该怎么办?

最佳答案

您要查看的对象是否实现了只考虑您关心的字段的equals(Object)hashCode()?如果是这样,您可以从第一个列表创建一个新的 HashSet,然后调用 retainAll() 并传入第二个列表。

如果他们没有针对您关心的属性实现equals(Object)hashCode(),您可以创建一个TreeSet 并传入一个 Comparator 来查看您关心的属性。

关于java - 如何在两个列表之间找到匹配的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5010821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com