hashCode和equals重写
2015-09-09 10:32
417 查看
1.创建实体类Student
2.创建测试类EqualTest
输出结果:
3.在Student类中添加生成hashCode()和equals()方法
4.再次测试,得到如下结果
参考:
java中equals,hashcode和==的区别
关于equals(Object obj)方法
Java中Set的contains()方法
public class Student { private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2.创建测试类EqualTest
public class EqualTest { /**set集合存放无序,不重复的元素 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Student student1=new Student("1", "Tom"); Student student2=new Student("1", "Tom"); System.out.println("内容相同的两个Student对象是否相同:"+student1.equals(student2)); Set<Student> set=new HashSet<Student>(); set.add(student1); set.add(student2); System.out.println(set); } }
输出结果:
内容相同的两个Student对象是否相同:false [com.jxufe.equal.Student@64c3c749, com.jxufe.equal.Student@7150bd4d]
3.在Student类中添加生成hashCode()和equals()方法
public class Student { private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } //hashCode()和equals()同时重写 @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
4.再次测试,得到如下结果
内容相同的两个Student对象是否相同:true [com.jxufe.equal.Student@152e2]
参考:
java中equals,hashcode和==的区别
关于equals(Object obj)方法
Java中Set的contains()方法
相关文章推荐
- Equals和==的区别 公共变量和属性的区别小结
- javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
- java String 类的一些理解 关于==、equals、null
- hashCode方法的使用讲解
- C#使用Equals()方法比较两个对象是否相等的方法
- C#值类型、引用类型中的Equals和==的区别浅析
- java的equals和==的比较示例
- why在重写equals时还必须重写hashcode方法分享
- java中hashCode方法与equals方法的用法总结
- JAVA hashCode使用方法详解
- Java中==与equals的区别小结
- 基于Java字符串 "==" 与 "equals" 的深入理解
- Java对象的equals,hashCode方法
- hashmap重写key的hashcode问题
- Java中equals和==的区别
- 重写equals方法和hashCode方法的套路
- 为什么equals(Object o)相等,hashCode()必须相等
- Error: Activity class {package1/package2.mainActivity} does not exist.
- LeetCode_contains-duplicate