数组就是把有限个数据类型一样的元素按顺序放在一起,用一个变量命名,然后可以用编号按顺序访问指定位置的元素的有序集合。
数组的特点:数组的长度是固定的;数组的访问是按照顺序访问的,虽然我们可以通过具体的下标来访问指定位置的元素,但是实际上计算机也是按照顺序来访问的。
时间复杂度O(n)
集合:列表,集,多重集,关联数组,树、图等都是集合。
集合的实现:ArrayList为例,它就是数组的一个拓展。当我们向其中存储数据时,如果数组的长度超过了限制,在其内部就会创建一个更长的数组,将之前的数据复制到新的数组里面,这样就解决了长度的问题。
集合的特点:变长;当长度增加时,这个操作比较消耗系统的性能。
时间复杂度O(n)
散列表:又叫哈希表,是能够通过指定关键字的值直接访问到具体对应的值的一个数据结构。加快了访问速度。
哈希函数:直接寻址法;数字分析法;平房取中法;取随机数法;除取留余法
哈希函数产生冲突:有时候不同的key通过哈希函数会取到相同的地址。
散列表的特点:当Key和Value的值是一样的时,我们称为Set(集合);
当Key和Value的值不一样的时侯,我们称为Map,也就是人们常说的键值对集合。
访问速度快,不需要一个个查找;需要额外的空间;无序;可能发生碰撞;
不发生碰撞时时间复杂度为O(1),发生碰撞时为O(L),L为链表的长度。