当前课程知识点:JAVA程序设计进阶 >  第七章 深入集合Collection >  7.5 HashSet >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

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)办法

来去实现

所以对于通过了解

我们集合类的内部

你就可以很好的去运用这些集合类

那最后我们还介绍了

这些集合类的适用范围

由于这些集合类

它本身所具有的特点并不一样

所以当我们在编程序过程中

考虑选择哪个类

作为我们的数据结构的时候

你就能够很好的去选择和决定

好 今天的内容到此为止

谢谢大家

JAVA程序设计进阶课程列表:

第一章 线程(上)

-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

第六章 Java虚拟机

-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

第七章 深入集合Collection

-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

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。