背景
与列表不同的是,集合不能有重复数据,列表可以有重复数据。
数据无序,列表数据是有序的。
对外数据结构
集合的数据结构
1.数据
2.大小
3.内部数据结构
整数集合intset还是hashtable
数据的数据结构
1.数据
2.大小
3.数据的内部编码类型 不是数据结构类型,而是int16 int32 int64
内部数据结构
1.整数集合intset
2.hashtable
整数集合就是,两个条件1.数据的数量百位数级别(500)2.且数据类型是整数,的情况下,就使用整数集合。其他情况就使用hashtable。
hashtable是因为所有的集合Set的底层实现数据结构都是使用的hashtable,因为映射的key不能重复,这样就确保了集合Set的数据不重复。
如何确保数据不重复?
1.整数集合intset
比较数据
2.hashtable
比较数据
连续内存和映射的区别?
整数集合intset
和压缩列表的区别
压缩列表不保证数据重复,而整数集合intset必须确保数据不能重复。
升级
如果插入新的数据的数据类型不一样,需要升级,实现步骤
1.扩展内存
内存不够,扩展内部
2.转换数据类型
转换旧的数据类型为新的数据类型
3.插入新的数据
这个步骤叫升级。
速度
如果数据类型不一样,每次插入新的数据都要升级,每次升级都要遍历所有数据,所以速度是N。好在数据不多,所以不影响速度。
升级的好处
1.最大程度节约内存
2.灵活性
之所以要升级的本质原因是数据的数据类型不一样,数据类型不一样的本质原因是尽可能的节约内存。
降级
不会降级,升级之后就不会降级。
参考
黄建宏