废话不说,代码先行!
package com.bobo;
import java.util.Set;
import java.util.HashSet;
public class TestA {
public static void main(String[] args) {
Set<Student> set = new HashSet<Student>();//1
set.add(new Student());//2
set.add(new Student());//3
//set大小->2
System.out.println("set大小->" + set.size());//4
//set包含 new Student()-->false
System.out.println("set包含 new Student()-->" + set.contains(new Student()));//5
set.clear();//6
System.out.println("--------------清空集合----------");
Student s =new Student();//7
set.add(s);//8
set.add(s);//9
//set大小->1
System.out.println("set大小->" + set.size());//10
//set包含 new Student()-->false
System.out.println("set包含 new Student()-->" + set.contains(new Student()));//11
//set包含 s指向的对象吗-->true
System.out.println("set包含 s指向的对象吗-->" + set.contains(s));//12
}
}
class Student extends Object{
}
简单分析:2,3行生成2个对象放进去就是2个;为什么?
首先,java的泪默认集成Object得到
public boolean equals(Object obj) {
return (this == obj);
}
public native int hashCode();
都是通过对象地址产生hashcode和比较的!
这样产生hashcode自然不同就放进去[不用考虑equals哦,呵呵后面在继续]
8,9行一个对象2个引用放进去就是1个,为什么?
上面类似 s指向的对象相同就是s的内容一样[一个地址数据],这样生成的hashcode一样,放不进!
5,11行 false为什么?
因为到集合找东西首先把找的对象生成hashcode看看集合有没有这个hashcode对应的,假设2,3分别的hashcode是2,3现在找的这个生成的hashcode是4,自然没有,返回false
12行,返回true
英文是一个s指向自然hashcode一样,在看equals返回是true
分享到:
相关推荐
equals 的简单介绍,对与equals有一个更加清晰的认识,可以参考
hashCode方法是Java中的一个方法,它可以生成一个对象的哈希值。哈希值是一个整数,它可以唯一地标识一个对象。两个对象的哈希值相等并不一定意味着两个对象相等,因为不同的对象可能具有相同的哈希值。 intern方法...
### .NET 命名空间总结 #### 一、引言 在.NET Framework或.NET Core/Standard中,命名空间(Namespace)是组织类和其他类型的一种逻辑分组方式,旨在帮助开发人员管理和避免名称冲突。本篇文章将深入探讨.NET中的...
增加validate-ajax以支持ajax验证 增加validate-pattern直接通过正则表达式的认证 修改validate-equlas以验证密码与确认密码的问题 增加less-than与great-than的验证以支持开始日期与结束日期相比较的问题 增加...
内容概要:本文详细介绍了基于STM32单片机的激光雕刻机控制系统的设计。系统包括硬件设计、软件设计和机械结构设计,主要功能有可调节激光功率大小、改变雕刻速率、手动定位、精确雕刻及切割。硬件部分包括STM32最小系统、步进电机驱动模块、激光发生器控制电路、人机交互电路和串口通信电路。软件部分涉及STM32CubeMX配置、G代码解析、步进电机控制、激光功率调节和手动定位功能的实现。 适合人群:对嵌入式系统和激光雕刻机感兴趣的工程师和技术人员。 使用场景及目标:① 适用于需要高精度激光雕刻的应用场合;② 为开发类似的激光雕刻控制系统提供设计参考。 阅读建议:本文提供了详细的硬件和软件设计方案,读者应结合实际应用场景进行理解,重点关注电路设计和代码实现。
白色简洁风格的前端网站模板下载.zip
HarmonyException如何解决.md
sdfsdfdsfsdfs222
html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+j
usbgps2.apk
白色简洁风格的家居建材网站模板下载.zip
EventEmitError解决办法.md
白色简洁风格的工艺品展览企业网站源码下载.zip
matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特率性能仿真,matlab代码 OFDM simulink 包括添加保护间隔(cp),信道均衡(ZF MMSE MRC MA LMSEE) 代码每行都有注释,适用于学习,附带仿真说明,完全不用担心看不懂
build(1).gradle
贴标飞达sw16全套技术资料100%好用.zip
其实这就是历年摘出来的
内容概要:本文针对大规模高分辨率遥感图像的处理问题,提出了一种基于图像分块的可扩展区域合并分割框架。传统的图像分块方法会导致分块边界上的伪影,影响最终结果。为解决这一问题,文中定义了稳定性边缘的概念,并给出了其数学表达,以确保分割结果与不分块时相同。此外,文章还介绍了一种高效的框架实现方法,用于在资源受限的设备上处理大型图像。 适合人群:从事遥感图像处理、计算机视觉及地理信息系统相关领域的研究人员和技术人员。 使用场景及目标:适用于需要处理大规模高分辨率遥感图像的应用场景,如环境监测、自然资源管理等。主要目标是提供一种能够高效处理大规模图像同时保持分割质量的方法。 其他说明:实验结果表明,所提出的算法不仅能够避免分块边界的伪影,而且能够在不同尺度下获得与不分块处理相同的分割结果。
白色简洁风格的手机图片展示博客网站模板.rar