Tag: 等于

更改集合中的元素会更改“等于”语义

想象一下,我们有这段代码。 public class HashAddAfter { private class A { public int value; public A(int value) { this.value = value; } public void setValue(int value) { this.value = value; } // Code for hashCode()… // Code for equals()… } Set list1 = new HashSet(); Set list2 = new HashSet(); public static void main(String[] args) { HashAddAfter […]

StringBuffer等于方法比较内容吗?

可能重复: 将StringBuffer内容与equals进行比较 StringBuffer s1= new StringBuffer(“Test”); StringBuffer s2 = new StringBuffer(“Test”); if(s1.equals(s2)) { System.out.println(“True”); } else { System.out.println(“False”); } 为什么那段代码打印“假”?

equals和hashCode:Objects.hash方法被破坏了吗?

我使用的是Java 7,下面有以下类。 我正确地实现了equals和hashCode ,但问题是equals在下面的main方法中返回false ,但hashCode为两个对象返回相同的哈希码。 我可以让更多的眼睛看这堂课,看看我在这里做错了吗? 更新:我用我自己的哈希函数替换了我调用Objects.hash方法的行: chamorro.hashCode() + english.hashCode() + notes.hashCode() 。 它返回一个不同的哈希码,这是当两个对象不同时hashCode应该做的事情。 Objects.hash方法被破坏了吗? 对你的帮助表示感谢! import org.apache.commons.lang3.StringEscapeUtils; public class ChamorroEntry { private String chamorro, english, notes; public ChamorroEntry(String chamorro, String english, String notes) { this.chamorro = StringEscapeUtils.unescapeHtml4(chamorro.trim()); this.english = StringEscapeUtils.unescapeHtml4(english.trim()); this.notes = notes.trim(); } @Override public boolean equals(Object object) { if (!(object instanceof ChamorroEntry)) […]

2 HashMap之间的平等

在我的类的equals()方法中,我使用私有实例HashMap变量来比较相等性。 但是,在比较它们的HashMap变量时,2个不同的对象仍然显示相等。 进一步的研究将我带到了链接: 链接在这里 。 但是,它只是说HashMap1.equals(HashMap2)无法工作的原因是因为“在没有编写自定义代码的情况下,不能对Java的数组进行相同的测试。” 我不明白这个原因。 任何人都可以指导我一个精心设计的原因吗?

java中的equals()和运算符“==”

我知道equals()会比较对象的值,’==’运算符会检查变量是否指向同一个内存。 我不明白equals()如何比较对象的值,例如: class Test { public Test(int x, float y) { this.x = x; this.y = y; } int x, float y; } Test test1 = new Test(1,2.0); Test test2 = new Test(1,2.0); 所以,如果我使用equals() ,它会比较每个对象中的每个属性吗? 那么如果我们谈论String呢? 使用equals()和operator“==”,我们还需要覆盖equals()吗?

match和equalsIgnoreCase之间的差异或字符串类中的equals

matches :将检查输入的完整字符串是否等于字符串对象中的值。 equalsIgnoreCase :忽略大小写,它会检查输入的字符串是否等于字符串对象中的值。 equals :区分大小写,它检查输入的字符串是否等于字符串对象中的值。 这就是我所知道的String类中的方法。 还有其他差异(我是否遗漏了任何有价值的差异)? 如果没有差异,那么为什么cant匹配方法会从String类中删除,因为它所提出的function可以适当地使用上述其他方法来实现。

将原语与包装器对象进行比较,其中==行为无法解释

我有一段代码需要我理解: public static void main(String[] args) { Character c = new Character(‘a’); Character cy = new Character(‘a’); char cx = ‘a’; System.out.println(c == cx); System.out.println(cx == cy); System.out.println(c == cy); } 输出: true true false 我无法理解为什么只有第三种说法失败了。 编辑:这个问题与.equals vs ==问题不同,因为这与原始与对象的比较有关。

java为什么要将equals方法输入参数设为Object

我正在阅读一本关于数据结构的书。 目前我在图表上,下面的代码是图表的顶点部分。 class Vertex{ //bunch of methods public boolean equals(Object o){ //some code } } 当我尝试实现这个equals方法时,我的编译器抱怨没有检查参数的类型,只是允许发送任何对象。 对我来说,为什么该参数不应该是Vertex而不是Object,这似乎有点奇怪。 有没有理由为什么作者这样做或者这是一个错误或过时的例子?

如果两个不同的对象具有相同的哈希码,会发生什么?

据我所知,两个不相等的对象可以具有相同的哈希码。 在从HashMap java添加或检索时如何处理?

equals方法 – 如何覆盖

我需要帮助来覆盖equals方法。 我有一切工作,除了equals方法。 我目前拥有的equals方法并没有给我正确的答案。 我似乎无法弄清楚可能是什么问题。 我的课: package myclasses; public class Currency { private int dollars, cents; public Currency() { dollars = 0; cents = 0; } public Currency(int d, int c) { this.dollars = d; this.cents = c; setCents(cents); } public int getDollars() { return dollars; } public int getCents() { return cents; } private void […]