当前课程知识点:JAVA程序设计进阶 > 第七章 深入集合Collection > 7.5 HashSet > Video
这一节我们来介绍一下HashSet
也就是Hash集合
那HashSet的话
它是实现了我们set接口
而且是基于Hash表来实现的
允许使用空的元素
这个类本身是非线程安全的
并且它并不能保证
这个集合的迭代顺序
特别是不保证
这种顺序是否持久不变
我们来看一下HashSet
它内部是怎么实现的
首先非常有意思的是
这个HashSet它的底层结构
是利用HashMap来保存它的元素的
我们可以看一下第二行
private transient HashMap
E Object map
同时它还定义了一个
虚拟的Object对象
作为HashMap的值的value
private static final Object PRESENT
等于new object
那我们看它的这个方法
add public boolean add E
然后它就是return map. put
e PRESENT==null
大家可以看到它实际上
是借助这个HashMap的add方法
来添加元素
所以它这个实现都比较的简炼
我们再往下看
public boolean contains Object o
来去检查一下某一个对象
是否包含在我们这个HashSet当中
那它实现个方法的话
是通过map.containsKey o
通过利用我们这个map
它的这个containsKey这个方法
来去实现在我们的Hash集合中
查找某一个元素的这个办法
所以我们可以看出
这个HashSet它比较巧妙的
利用了底层的HashMap
来实现了它的很多功能
那对于set集合
我们在Java这种框架
集合框架类始终当中
有好几个类
它实际上是实现了set这个接口的
那我们的HashSet
是通过HashMap来实现的
我们的TreeSet
是通过TreeMap来实现的
然后我们的LinkedHashSet
它也是通过linkedHashMap来实现的
所以说我们这些这几个set
实现set接口的这些类
和实现map接口的类
它都有拥有了非常近似的
这些使用特性
所以这个特点的话
也希望大家能够记住
也就是说我们的这几个set的类
它的性能上特点上
和我们上一节所介绍的
那几个map的类
都是非常相关的
下面总结一下今天我们讲课的内容
我们今天首先介绍了
我们常用的一些集合类
那我们介绍的List Map Set
这几个接口
那在这几个接口之下
又有好多的类
是实现了这些接口
比如说我们的HashSet
ArrayList linkedList
HashMap TreeMap等等这些
那与此同时我们还介绍了
这几个类的
它的内部的实现过程
为什么要介绍这些呢
是因为要告诉大家说
它的每一个数据结构
这些类它到底是怎么实现的
你明白了它的实现原理了以后
你就知道说它的效率和性能
到底是怎样的
为什么高 为什么低
哪些类到底和线程安全有没有关系
有没有已经实现的线程安全特性
那没有实现的话
你就得自己通过加(04:31)办法
来去实现
所以对于通过了解
我们集合类的内部
你就可以很好的去运用这些集合类
那最后我们还介绍了
这些集合类的适用范围
由于这些集合类
它本身所具有的特点并不一样
所以当我们在编程序过程中
考虑选择哪个类
作为我们的数据结构的时候
你就能够很好的去选择和决定
好 今天的内容到此为止
谢谢大家
-1.0 导学
--Video
-1.1 线程的基本概念
--Video
-1.1 线程的基本概念--作业
-1.2 通过Thread类创建线程
--Video
-1.2 通过Thread类创建线程--作业
-1.3 线程的休眠
--Video
-1.3 线程的休眠--作业
-1.4 Thread类详解
--Video
-1.5 通过Runnable接口创建线程
--Video
-1.5 通过Runnable接口创建线程--作业
-1.6 线程内部的数据共享
--Video
-2.0 导学
--Video
-2.1 线程同步的思路
--Video
-2.2 线程同步的实现方式—Synchronization
--Video
-2.3 线程的等待与唤醒
--Video
-2.4 后台进程
--Video
-2.5 线程的生命周期与死锁
--Video
-2.6 线程的调度
--Video
-3.0 导学
--Video
-3.1 线程安全与线程兼容与对立
--Video
-3.2 线程的安全实现-互斥同步
--Video
-3.3 线程的安全实现-非阻塞同步
--Video
-3.4 线程的安全实现-无同步方案
--Video
-3.5 锁优化
--Video
-4.0 导学
--Video
-4.1 URL对象
--Video
-4.2 URLConnection对象
--Video
-4.3 Get请求与Post请求
--Video
-4.4 Socket通信原理
--Video
-4.5 Socket通信实现
--Video
-5.0 导学
--Video
-5.1 Socket 多客户端通信实现
--Video
-5.2 数据报通信
--Video
-5.3 使用数据报进行广播通信
--Video
-5.4 网络聊天程序
--Video
-6.0 导学
--Video
-6.1 Java虚拟机概念
--Video
-6.2 Java虚拟机内存划分
--Video
-6.3 Java虚拟机类加载机制
--Video
-6.4 判断对象是否存活算法及对象引用
--Video
-6.5 分代垃圾回收
--Video
-6.6 典型的垃圾收集算法
--Video
-6.7典型的垃圾收集器
--Video
-7.0 导学
--Video
-7.1 集合框架与ArrayList
--Video
-7.2 LinkedList
--Video
-7.3 HashMap与HashTable
--Video
-7.4 TreeMap与LinkedHashMap
--Video
-7.5 HashSet
--Video
-8.0 导学
--Video
-8.1 Java反射机制
--Video
-8.2 Java静态代理
--Video
-8.3 Java动态代理
--Video
-8.4 Java 反射扩展-jvm加载类原理
--Video
-8.5 Java进阶课程总结
--Video