HashSet存储自定义类型元素

给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一

创建自定义类

package com.learn.demo02.Set;import java.util.Objects;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age &&Objects.equals(name, person.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
package com.learn.demo02.Set;import java.util.HashSet;/*HashSet存储自定义类型元素set集合报错元素唯一:存储的元素(String,Integer,...Student,Person...),必须重写hashCode方法和equals方法要求:同名同年龄的人,视为同一个人,只能存储一次*/
public class Demo03HashSetSavePerson {public static void main(String[] args) {//创建HashSet集合存储PersonHashSet<Person> set = new HashSet<>();Person p1 = new Person("小美女",18);Person p2 = new Person("小美女",18);Person p3 = new Person("小美女",19);System.out.println(p1.hashCode());//1967205423System.out.println(p2.hashCode());//42121758System.out.println(p1==p2);//falseSystem.out.println(p1.equals(p2));//falseset.add(p1);set.add(p2);set.add(p3);System.out.println(set);}}

HashSet存储自定义类型元素相关推荐

  1. HashSet存储自定义对象保证元素唯一性图解原理及代码优化

    HashSet存储自定义对象保证元素唯一性图解原理及代码优化 1.原理: * 1.HashSet原理       * 我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比 ...

  2. Java中Collection集合常用API - Collection存储自定义类型对象

    文章目录 Collection常用API Collection存储自定义类型对象 Collection常用API Collection集合API Collection是单列集合的祖宗接口,因此它的功能 ...

  3. GreenDao存储自定义类型对象解决方案(转)

    最近公司项目选用GreenDao作为Android客户端本地数据库的对象关系映射框架.对于GreenDao虽然以往也有简单用过,但这还是笔者第一次在实际业务中使用.碰到了题目所述的两个问题,虽然在Tu ...

  4. HashMap存储自定义类型键值: 重写HashCode和equals方法

    一个团体作为一个HashMap的key值,若团体成员的姓名年龄相同,则看作key值相同 因为是自定义类,所以需要重写HashCode和equals方法 public class RedVelvet { ...

  5. Qt基础之十:使用QVariant存储自定义类型

    QVariant支持大部分常见的Qt数据类型互转,比如: this->setProperty("number", 1); int number = this->prop ...

  6. 在NSUserDefaults中存储自定义类型的数据

    将自定义的类的数据以数组的形式直接存储到NSUserDefaults中会报错,需要进行转换,且需要将该类实现NSCoding协议. e.g. 存储过程 NSMutableArray *archiveA ...

  7. 在配置文件(.settings、.config)中存储自定义对象

    引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出"settings无法实现对一些复杂类型及自定义类型的支持". ...

  8. HashSet存储元素保证唯一性的代码及图解

    需求:存储自定义对象,并保证元素的唯一性 要求:如果两个对象的成员变量值都相同,则为同一个元素. 示例代码如下: 1 package cn.itcast_02; 2 3 /** 4 * @author ...

  9. 面试官:HashSet是如何保证元素不重复的?

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 本文已收录<Java常见面试题>系列,开源地址:https: ...

最新文章

  1. 验证组播的TTL阀值
  2. CodeForces - 78E Evacuation(最大流)
  3. 米粉期盼小米Civi推Pro版本:搭载骁龙870旗舰芯片
  4. struts2.0+spring intercepter 不能注入属性
  5. places365_Google Places API网络服务示例
  6. Docker核心技术与实现原理
  7. CMMI5访谈学习笔记(项目经理角色)(转)
  8. python返回对象_函数返回一个对象-python
  9. 利用cookies登录QQ空间
  10. [置顶] 一个程序员的科幻小说
  11. docker一键部署springboot项目(三)
  12. 【算法百题之四十二】罗马数字转整数
  13. Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱
  14. 产品经理(Product Manager)相关英文术语
  15. BPM流程建模开发详解
  16. c++: Logger日志信息
  17. 如何让自己的浏览器全屏?
  18. 了解Java线程优先级,更要知道对应操作系统的优先级,不然会踩坑
  19. hadoop各种发行版本
  20. 反汇编-objdump

热门文章

  1. spec文件中的 %pre %post %preun %postun
  2. Python基础---容器集合Set
  3. Windows8 64位运行Silverlight程序不能访问WCF的解决方案
  4. SQL SERVER中一些常见性能问题的总结
  5. 乐观锁与悲观锁深入学习
  6. golang map源码分析
  7. 循序渐进学习Linux--第二天更新
  8. OpenCV Cut Image via ROI 根据兴趣区域剪裁图片
  9. 一个复杂系统的拆分改造实践
  10. [PE格式分析] 3.IMAGE_NT_HEADER