【Set和HashSet】

1、Set

​ 概念:Set集合类似于一个瓶罐子,集合中的多个对象之间没有明显的顺序排列。

​ 特点如下:

  • ​ set集合不允许包含相同的元素,如果试图要把两个相同的元素加入到同一个Set集合中,则将添加失败;add方法返回false,且新元素不会被加入。【无序容器】

  • ​ 使用equals方法判断两个对象是否相同,不使用==运算符

  • ​ 最多包含一个Null元素

​ 常用:

​ 最常用的实现类有HashSet、LinkedHashSet和TreeSet;

​ TreeSet是一个有序的集合容器,它实现了SortedSet接口,根据compare()方法和compareTo()方法进行排序

2、HashSet:

​ 概念:HashSet顾名思义是通过hash算法存储集合元素的,依赖数据结构是哈希表,因而它具有良好存取和查找功能;HashSet是Set接口的实现类,多数情况下使用Set集合都是通过HashSet来实现的。

​ 特点如下:

  • ​ HashSet 集合中存储的元素(对象)是无序排列的,插入的元素(对象)是根据的是hashcode

  • ​ HashSet是线程不安全的(非同步的)

  • ​ HashSet允许为null,但仍不允许有重复的值

  • ​ HashSet实现了Serializable和cloneable两接口


3、一段插曲:

这里再来回顾以下Serializable接口:

​ Serializable接口,是一个对象序列化接口,一个Java类只有通过实现Serializable接口了它的对象才可以被序列化

什么是序列化呢??(emm这知识怎么学了总忘啊) 下面咱们再来回顾以下吧…

​ 序列化就是将对象的状态信息转换为可以存储或者传输的形式的过程(也可以说是把对象转换为字节序列的过程),比方说,把对象通过网络进行传输、将对象的状态信息持久化

通俗讲,在代码运行时,我们可看到有很多的对象,这些对象可以是一个、也可以是一类对象的集合,在这些对象数据中我们需要把一部分信息给保存下来,这时,有了序列化就可以把内存里的这些对象转换为一串串字节描述这个过程。(常见就是变成了文件

序列化能干嘛??(请往下看😁)

​ 1、在你想要把内存中的对象状态保存到一个文件中/数据库时 要用它

​ 2、在你要把套接字在网络上传送对象时 要用它

​ 3、在你要用RMI传输对象时 要用它(RMI是远程方法调用,能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法)

怎么像是跑偏了、你确定标题不是Set集合么??

img

(这里描述可能还不够清楚,若大佬有通俗的见解,欢迎多多指正,在下不胜感激!)

img


最后格言: 绊脚石乃是进身之阶

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐