Java HashCode作用

来源:互联网 发布:linux 内核 内存管理 编辑:程序博客网 时间:2024/06/06 00:30
import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;public class ReflectTest2 {public static void main(String[] args) {/*Collection collection = new ArrayList();ReflectPoint pt1 = new ReflectPoint(3, 3);ReflectPoint pt2 = new ReflectPoint(5, 5);ReflectPoint pt3 = new ReflectPoint(3, 3);collection.add(pt1);collection.add(pt2);collection.add(pt3);collection.add(pt1);System.out.println(collection.size());//打印为4*//* * 知识点: * HashSet加入元素时会首先检查内部是否包含对象x, * 如果已经包含对象x,则不再加入. 那两个对象如何才 * 是相等呢? 就是通过 equals 方法来比较的 */Collection collection = new HashSet();ReflectPoint pt1 = new ReflectPoint(3, 3);ReflectPoint pt2 = new ReflectPoint(5, 5);ReflectPoint pt3 = new ReflectPoint(3, 3);collection.add(pt1);collection.add(pt2);collection.add(pt3);collection.add(pt1);//如果ReflctPoint没有覆盖hashCode和equals方法则打印为3System.out.println(collection.size()); }}


import java.util.Date;public class ReflectPoint {private Date birthday = new Date();private int x;public int y;public String str1 = "ball";public String str2 = "basketball";public String str3 = "itcast";public ReflectPoint(int x, int y) {this.x = x;this.y = y;}//右键-->source-->生成hashCode和equals方法,系统会自动帮你生成@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;final ReflectPoint other = (ReflectPoint) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}@Overridepublic String toString(){return str1 + ":" + str2 + ":" + str3;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}}


原创粉丝点击