Java 7 是否可以临时重写equals方法?

Java 7 是否可以临时重写equals方法?,java-7,equals,hashcode,Java 7,Equals,Hashcode,有没有一种方法可以临时重写java中的hashcode和equals? 我有一个User类,具有id、name和age属性。当前的等于比较id,这是正确的。因此,如果两个ID相同,则用户相等 现在,我有两个用户列表,我想找到具有通用名称的用户 除了将list1的每个元素循环到list2的每个元素之外,我没有其他选择(Java7)。有没有办法,我可以暂时改变equals的行为?在这种情况下,当我编写搜索具有常用名称的用户的逻辑时,我希望能够说如果名称相同,那么用户是相等的(即使在技术上不正确),而

有没有一种方法可以临时重写java中的hashcode和equals? 我有一个
User
类,具有
id、name
age
属性。当前的
等于
比较id,这是正确的。因此,如果两个ID相同,则用户相等

现在,我有两个
用户列表
,我想找到具有通用名称的用户


除了将list1的每个元素循环到list2的每个元素之外,我没有其他选择(Java7)。有没有办法,我可以暂时改变
equals
的行为?在这种情况下,当我编写搜索具有常用名称的用户的逻辑时,我希望能够说如果名称相同,那么用户是相等的(即使在技术上不正确),而不涉及实际的
用户
类的相等

以这种方式重写
equals
似乎没有任何好处。如果您希望使用
contains
,它仍然会执行您想要避免的循环,只是隐藏起来。这听起来像是映射的作业。不要覆盖equals和hashcode。您要找的是一个比较器。@user2357112同意。至少是标准的JavaAPI在做这些事情。虽然我想知道是否将两个列表转换为一个映射,然后以某种方式做我想做的事情会具有成本效益。@NathanHughes我不想对元素进行排序。我从来没有使用过比较器来实现我想要做的事情。有什么例子吗?与其试图隐藏昂贵的操作,不如用一个有效的解决方案来替换它,在一个列表上循环,将所有元素放入一个
HashMap
,从所需的属性(名称)映射到元素,然后在另一个列表上循环查找名称。这是n+m运算,而不是n×m运算…