集合&列表&数组三者的区别
首先介绍一下集合
- 集合里的元素类型不一定相同,可以把一个超市看做一个集合,超市里有购物者和物品,他们之间没有关系。
- 其次集合里的元素没有顺序。
然后介绍一下列表
列表又称线性列表,所谓线性即它具有顺序,且长度是可变的
- 我们可以把列表看做是一张购物清单。
- 购物清单中的条目代表的类型可能不同,但是按照一定顺序进行了排列;
- 购物清单的长度是可变的,你可以向购物清单中增加、删除条目。
列表最常见的表现形式有数组和链表,而我们熟悉的栈和队列则是两种特殊类型的列表。除此之外,向列表中添加、删除元素的具体实现方式会根据编程语言的不同而有所区分。
最后是数组
数组是列表的实现方式之一
- 数组是列表的实现方式,它具有列表的特征,同时也具有自己的一些特征。
如何从宏观上区分列表和数组呢?这里有一个重要的概念:索引。
- 首先,数组会用一些名为
索引
的数字来标识每项数据在数组中的位置,且在大多数编程语言中,索引是从0
算起的。我们可以根据数组中的索引,快速访问数组中的元素。
而列表中没有索引,这是数组与列表最大的不同点。
- 其次,数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。要理解这一点,我们需要了解数组在内存中的存储方式。
- 相反,列表中的元素在内存中可能彼此相邻,也可能不相邻。比如列表的另一种实现方式——链表,它的元素在内存中则不一定是连续的
。比如列表的另一种实现方式——链表,它的元素在内存中则不一定是连续的