HashTest以及对象唯一性(一)

简介: package cn.cp; //尽管我们在Person类里写了equals方法,但是还是存入了两个name=liming,age=12的对象 //这是为什么呢???????? //因为HashSet在往里面存对象的时候,它存的是Hash值。
package cn.cp;
//尽管我们在Person类里写了equals方法,但是还是存入了两个name=liming,age=12的对象
//这是为什么呢????????
//因为HashSet在往里面存对象的时候,它存的是Hash值。
//虽然建立的两个name=liming,age=12但是他们的hash值不一样,所以当做了不同的对象。
//注意:
//(1)Java里一个hash值下可能有多个对象。
//(2)在HashSet中在比较是否是同一个对象时,先比较的hash值,若hash值不一样那么二者肯定不是同一元素。
//(3)hash值一样,再比较两个对象,若对象还一样则说明这是同一个东西,于是不再存入
//所以,我们这么做根本没有用
//这也就是我们常说的:一般来说重写equals()的同时总是要重写hashCode()方法
import java.util.HashSet;
import java.util.Iterator;
class Boy1 {
	private int age;
	private String name;

	public Boy1(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public String getName() {
		return name;
	}

	@Override
	public boolean equals(Object obj) {
		Boy1 b=(Boy1) obj;
		boolean result=this.age==b.age&&this.name.equals(b.name);
		return result;
	}

	@Override
	public String toString() {
		return "boy1 [age=" + age + ", name=" + name + "]";
	}

}

public class HashSetTest1 {
	public static void main(String[] args) {
      Boy1 boy1=new Boy1(12, "liming");
      Boy1 boy2=new Boy1(13, "liming");
      Boy1 boy3=new Boy1(12, "liming");
      HashSet hashSet=new HashSet();
      hashSet.add(boy1);
      hashSet.add(boy2);
      hashSet.add(boy3);
      Iterator iterator=hashSet.iterator();
      while(iterator.hasNext()){
      	System.out.println(iterator.next());
      }
	}
}

相关文章
|
关系型数据库 数据库 PostgreSQL
postgresql :permission denied to create database
postgresql :permission denied to create database
1415 0
|
10月前
|
机器学习/深度学习 监控
在进行多任务学习时,确保模型不会过度拟合单一任务而忽视其他任务
多任务学习(MTL)中,为避免模型过度拟合单一任务,可采取任务权重平衡、损失函数设计、正则化、早停法、交叉验证、任务无关特征学习、模型架构选择、数据增强、任务特定组件、梯度归一化、模型集成、任务选择性训练、性能监控、超参数调整、多任务学习策略、领域适应性和模型解释性分析等策略,以提高模型泛化能力和整体表现。
|
10月前
|
数据可视化 搜索推荐 数据挖掘
2024年中国CRM系统排名:趋势与领导者
CRM系统在现代商业中至关重要,它不仅提升了客户管理的效率和质量,还通过防止撞单、提高销售团队协作能力和降低销售成本等方式,增强企业的市场竞争力。国内CRM市场中,销售易、白码、悟空等品牌凭借各自优势,为企业提供全面的客户关系管理解决方案,助力企业在激烈的市场竞争中脱颖而出。
|
11月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
170 2
|
Web App开发 前端开发 安全
如何用JAVA如何实现Word、Excel、PPT在线前端预览编辑?
随着信息化的发展,在线办公也日益成为了企业办公和个人学习不可或缺的一部分,作为微软Office的三大组成部分:Word、Excel和PPT也广泛应用于各种在线办公场景,但是由于浏览器限制及微软Office的不开源等特性,导致Word、Excel和PPT在在线办公很难整合到自己公司的OA或者文档系统。
875 97
|
存储 Kubernetes 安全
在k8S中,Secret 有哪些使用方式?
在k8S中,Secret 有哪些使用方式?
|
API
Calendar常用API
Calendar常用API
206 1
|
存储 运维 监控
怎样配置Linux分析工具:kdump篇
在运维的世界里,服务器的稳定运行是生命的灯塔,一旦遭遇异常重启,便是暴风雨来临的预兆。作为一名运维工程师,深知在这场与故障斗争的战役中,武器的锋利至关重要。今天,我要介绍的主角/工具——kdump,正是这样一款能在风雨来临之际,为我们捕获那一闪而过的真相的工具。
怎样配置Linux分析工具:kdump篇
|
SQL 关系型数据库 MySQL
MySQL中的12个SQL编写规范
SQL良好习惯提升查询清晰度、效率和安全性,包括使用EXPLAIN分析查询计划、DELETE/UPDATE时加LIMIT限制影响范围、为表和字段添加注释、关键字大写缩进、指定INSERT字段名、先测试后执行、表含主键及时间戳字段、Update/Delete需Where条件、用InnoDB引擎、避免SELECT *,选择UTF8字符集和规范索引命名。
MySQL中的12个SQL编写规范
|
并行计算 算法框架/工具 异构计算
JAX 中文文档(十六)(5)
JAX 中文文档(十六)
241 2