🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 集合 集合中存放的都是对象,不能存放基本数据类型(应使用其包装类) 常用集合: * List 接口:有序集合,可重复 * Set 接口:无序集合,不可重复 * Map 接口:映射集合,存放键值对 * Queue 接口:队列,按照某种原则进行访问 如先进先出 * Deque 接口:支持从两端进行元素插入 ## List 实现 List 接口的实现类有 ArrayList、LinkedList、Vector(早期容器,已过时)、Stack(Vector 的子类)。 * ArrayList 是基于动态数组的数据结构 * LinkedList 是基于链表的数据结构 * LinkedList 是一种双向链式结构,即每个元素中除了数据本身,还存放有它前一后元素和后一个元素的引用(相当于指针) * 对于随机访问 get 和 set,ArrayList 要优于 LinkedList,因为 LinkedList 要移动指针 * 在指定位置插入、删除元素时,ArrayList 会移动指定 index 后面所有的元素,LinkedList 则会通过 for 循环找到指定 index,然后直接插入或移动 两者效率对比: * 效率决定因素:插入的数据量和插入的位置。 * 当数据量较小时,两者效率差不多,没有显著区别;当数据量较大时,大约在容量的 1/10 处开始,LinkedList 的效率就开始没有 ArrayList 效率高了,特别到一半以及后半的位置插入时,LinkedList 效率明显要低于 ArrayList,而且数据量越大,越明显。 * 所以当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用 ArrayList 会提供比较好的性能; * 当操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就使用 LinkedList。