1Set接口基本介绍
无序,没有索引不允许重复元素,所以最多包含一个null
2Set接口的常用方法
和List接口一样,Set接口也是Collection的子接口,常用方法和Collection接口一样
3Set接口的遍历方式
可以使用迭代器增强for不能使用索引的方式来获取
HashSet实现了Set接口HashSet实际上是HashMap
public HashSet() {
map = new HashMap<>();
}
可以存放Null值,但是只能有一个NullHashSet不保证元素是有序的,取决于hash后,再确定索引的结果不能重复元素/对象
HashSet底层机制说明
HashSet底层是HashMap添加一个元素时,先得到Hash值找到存储数据表table,看这个索引位置是否已经存放过元素如果没有,直接加入如果有,调用equals比较,如果相同,就放弃添加,如果不相同,则以链表的形式添加到该索引对应的已有元素最后面在java8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD,并且table的大小>=MIN_TREEIFY_CAPACITY,就会进行树化
LinkedHashSet是HashSet的子类LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表LinkedHashSet根据元素的HashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的不允许添加重复元素
文章为作者独立观点,不代表股票交易接口观点