博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hashCode equals hashSet
阅读量:4693 次
发布时间:2019-06-09

本文共 3330 字,大约阅读时间需要 11 分钟。

基于hash的map也是这种机制。

HashSet

import java.util.HashSet;import java.util.Set;import java.util.TreeSet;public class Sets {    public static void main(String[] args) {        // TODO Auto-generated method stub        Person p1 = new Person("320321");        p1.setAge(22);        p1.setName("p1");        Person p2 = new Person("320321");        p2.setAge(23);        p2.setName("p2");        Person p3 = new Person("320322");        p3.setAge(22);        p3.setName("p3");        Person p4=new Person("320321");        p4.setAge(22);        p4.setName("p4");        HashSet
hashSet = new HashSet(); /* * Add elements */ // p1 equals p2, p1.hashCode != p2.hashCode hashSet.add(p1); hashSet.add(p2); // p1, p2 System.out.println(hashSet); // p3 not equals p1, p2, but p3.hashCode == p1.hashCode hashSet.add(p3); // p1, p3, p2 System.out.println(hashSet); // p4 equals p1, p2, and p4.hashCode == p1.hashCode hashSet.add(p4); // p1, p3, p2, without p4 System.out.println(hashSet); /* * Remove elements. Now, the SET contains p1, p3, p2 */ hashSet.remove(p4); // p1 will be removed, since p1 equals p4 and p1.hashCode == p4.hashCode System.out.println(hashSet); // Although the SET contains p2 who equals p4, but can't find "p4" // Also, p3.hashCode == p4.hashCode but not find "p4" in the same bucket System.out.println(hashSet.contains(p4)); }}

Person

public class Person implements Comparable
{ private String name, id, gender; private int age; private String[] property; public Person() { } public Person(String id) { this.id = id; } public String getId() { return id; } public void setName(String name) { this.name = name; } public void setGender(String gender) { this.gender = gender; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public String getGender() { return gender; } public int getAge() { return age; } public String[] getProperty() { return property; } public void setProperty(String[] property) { this.property = property; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof Person)) { return false; } Person p = (Person) o; if (id == null ? p.getId() == null : id.equals(p.getId())) { return true; } return false; } @Override public int hashCode() { return age; } @Override public String toString() { return this.id + " age: " + this.age + " name: " + this.name; } @Override public Person clone() { Person p = null; try { p = (Person) super.clone(); p.setProperty(property.clone()); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return p; } @Override public int compareTo(Person p) { return this.age - p.getAge(); }}

 

转载于:https://www.cnblogs.com/chenhuanBlogs/p/7076820.html

你可能感兴趣的文章
数据结构化与保存
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
SQL case when else
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
我的第一篇博客
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
python之hasattr、getattr和setattr函数
查看>>