java比较两个对象是否相等
java比较两个对象,可以通过重写equals()实现。
1.比较对象时, ==比较的是地址,而equals()比较的是对象内容
2.重写equals()方法必须重写hashCode()
示例代码如下:
Person.java
可以自动生成get()、set()、构造函数、equals()、hashCode等方法。
Idea选择类的代码,写入属性名,如下为name和age,然后右键-->Generate,就可以自动生成了。
eclipse类似。搜索下快捷键也可以自动生成。
public class Person { private String name; private int age;</span><span style="color: #0000ff">public</span> Person(String name, <span style="color: #0000ff">int</span><span style="color: #000000"> age) { </span><span style="color: #0000ff">this</span>.name =<span style="color: #000000"> name; </span><span style="color: #0000ff">this</span>.age =<span style="color: #000000"> age; } </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getName() { </span><span style="color: #0000ff">return</span><span style="color: #000000"> name; } </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setName(String name) { </span><span style="color: #0000ff">this</span>.name =<span style="color: #000000"> name; } </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> getAge() { </span><span style="color: #0000ff">return</span><span style="color: #000000"> age; } </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAge(<span style="color: #0000ff">int</span><span style="color: #000000"> age) { </span><span style="color: #0000ff">this</span>.age =<span style="color: #000000"> age; } @Override </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> equals(Object o) { </span><span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span> == o) <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">; </span><span style="color: #0000ff">if</span> (o == <span style="color: #0000ff">null</span> || getClass() != o.getClass()) <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">; Person person </span>=<span style="color: #000000"> (Person) o; </span><span style="color: #0000ff">if</span> (age != person.age) <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">; </span><span style="color: #0000ff">return</span><span style="color: #000000"> name.equals(person.name); } @Override </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> hashCode() { </span><span style="color: #0000ff">int</span> result =<span style="color: #000000"> name.hashCode(); result </span>= 31 * result +<span style="color: #000000"> age; </span><span style="color: #0000ff">return</span><span style="color: #000000"> result; }