[javaSE] 集合框架(HashSet)
Set:元素是无序,不可重复的
HaseSet:底层数据结构是哈希表
定义一个类Demo
获取Demo对象,system.out.println(demo),打印demo对象,Demo@xxxxxx
Demo对象在内存中是按照哈希值存储在哈希表中,取出也是按照哈希值,所以是无序的
import java.util.HashSet; class Demo{
}
public class HashSetDemo { /**
* @param args
*/
public static void main(String[] args) {
Demo demo1=new Demo();
Demo demo2=new Demo();
System.out.println(demo1);
System.out.println(demo2);
HashSet set=new HashSet();
set.add(demo1);
set.add(demo2);
System.out.println(set);
} }
结果:
Demo@1a8fa0f0
Demo@4b8efa2f
[Demo@4b8efa2f, Demo@1a8fa0f0]
定义一个类Demo
重写hashCode()方法,返回一个固定的数字,例如:90,打印对象显示,Demo@3c
获取多个对象,哈希值都是一样的,此时存入HaseSet中,使用equals()方法,判断是否是同一个对象,如果不是同一个对象,会顺延存储
import java.util.HashSet; class Demo{
@Override
public int hashCode() {
return 90;
}
@Override
public boolean equals(Object obj) {
System.out.println("调用到此处说明,判断是否同一对象");
return super.equals(obj);
}
}
public class HashSetDemo { /**
* @param args
*/
public static void main(String[] args) {
Demo demo1=new Demo();
Demo demo2=new Demo();
System.out.println(demo1);
System.out.println(demo2);
HashSet set=new HashSet();
set.add(demo1);
set.add(demo2);
System.out.println(set);
} }
结果:
Demo@5a
Demo@5a
调用到此处说明,判断是否同一对象
[Demo@5a, Demo@5a]
[javaSE] 集合框架(HashSet)的更多相关文章
- Java自学-集合框架 HashSet
Java集合框架 HashSet 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public cla ...
- [javaSE] 集合框架(体系概述)
为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能 ...
- 集合框架-HashSet集合(无序唯一)
1 package cn.itcast.p4.hashset.demo; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 /* ...
- 集合框架(HashSet存储自定义对象保证元素唯一性)
HashSet如何保证元素唯一性的原理 1.HashSet原理 a. 我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降 ...
- [javaSE] 集合框架(共性方法)
Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 ...
- 集合框架-HashSet存储自定义对象
1 package cn.itcast.p4.hashset.test; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 6 ...
- [javaSE] 集合框架(TreeSet)
TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 ...
- [javaSE] 集合框架(迭代器)
当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 ...
- [javaSE] 集合框架(Map概述)
Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMa ...
随机推荐
- Visual Studio在Win10中以管理员方式运行
在Win10中运行VS不是默认以管理员程序运行的,需要手动设置 第一步:将VS快捷方式设置为以管理员身份运行 第二部 在C:\Program Files\Microsoft Visual Studio ...
- 【自动化专题】借助firefox插件定位web元素小技巧
浏览器:firefox 插件:firebug.firepath.firefinder 安装插件---已安装的请跳过 1.安装firefox浏览器 2.打开firefox-附加组件(找不到入口的问度娘) ...
- Kotlin 基本语法
常量 val a: Int = 5 变量 var a: Int = 5 Any:匹配任何类型 ?:nullable,比如 a?.toString,如果 a 为 null 不会出错. 函数基本结构 fu ...
- dpdk EAL: Error reading from file descriptor 23: Input/output error
执行test程序时输出: EAL: Error reading from file descriptor 23: Input/output error 原因: 在虚拟机添加的网卡,dpdk不支持导致的 ...
- Exp3 免杀原理与实践 20164321 王君陶
Exp3 免杀原理与实践 20164321 王君陶 1实验要求 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分), ...
- Retrofit源码解析(下)
接着上一章继续分析上一章主要简单说了一下基本使用和注解,这一章,我们主要看源码,废话不多说了,直接上.先上一张图 从网络上拿来的 前面一章说了一下Retrofit的简单使用https://www.cn ...
- ssh密钥认证排错
sshd配置文件没问题: 目录权限设置也没问题: 但是 ssh -vvv 提示: debug3: no such identity: /Users/user/.ssh/id_rsa,/Users/us ...
- linux 服务器性能监控(一)
这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数.指标的含义以及一些交互操作. 几个问题 命令本身并不复杂,关键是你对操作系统基础知识的掌握和理解,先来看看下面几个问题: C ...
- C# MVC 与Java MVC
C# MVC与Java MVC都是三层结构:Controller.View.Model,基本上没有什么区别. 但是C# MVC有很多的变形模式: 上图所示就是C#里面MVC变向模型,里面包含BLL.C ...
- 【9】JMicro微服务-发布订阅消息服务
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 1. JMicro消息服务目前实现特性 a. JMicro只支持发布订阅消息服务,不支持队列式消息服务: b. 不支持消息持 ...