一.前言
今天面试,上来第一个问题就是关于 Set 集合,因为之前做的准备都是什么 HashMap 啊, List 之类的,但是对于 Set 集合没有做过多的了解,所以一时语塞。看来基础是不能挑着学的。全部掌握才不怕。
二.Set 接口
1.简介
以下内容引用自 源码中的注释
Set 集合是一个不包含重复元素的集合。更确切地讲,set 不包含满足对于两个存在Set 中对象 e1 和 e2, e1.equals(e2) 的元素,并且最多包含一个 null 元素。
注:如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,如果以一种影响 equals 比较的方式改变对象的值,那么 set 的行为就是不确定的。此项禁止的一个特殊情况是不允许某个 set 包含其自身作为元素。
总的来说:就是 Set 集合中存储的元素是不能存在重复的,且存储在 Set 集合中的元素如果一个可变的对象,则对对象的操作就千万不能使这个对象的 equals 方法发生变化,否则就会使 Set 集合处于未知的状态,因为 Set 集合保证对象唯一的条件的是通过 equals 方法来判断的。
2.Set 接口
1 |
|