java中equal和hashCode方法

来源:互联网 发布:分享一些网络摄像头id 编辑:程序博客网 时间:2024/06/07 23:45
package test.kang;import java.util.HashMap;public class Test25 {public static void main(String[] args) {/*一般如果使用java中的Map对象进行存储时,他会自动调用hashCode方法来比较两个对象是否相等。 * 当Apples类不重写hashCode方法,输出dont have such a key * 重写hashCode方法后,输出对象的内存地址*/HashMap hm = new HashMap();    Apples appple=new Apples("青苹果",5);Apples appple2=new Apples("青苹果",5);hm.put(appple.getName(),appple);    if(hm.containsValue(appple2))System.out.println(hm.get(appple2.getName()));    else    System.out.println("dont have such a key");    } }class Apples{private String name;private int num;public Apples(){}public Apples(String name,int a){this.name=name;this.num=num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result + num;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Apples other = (Apples) obj;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (num != other.num)return false;return true;}}

原创粉丝点击