北大青鸟APTECH在中国职业教育发展的重要历史阶段,始终引领行业发展方向,并以完善的标准化管理为依托实现了体系的规模化发展。当前,北大青鸟APTECH的200余家授权培训中心遍布50多个重要城市,合作院校超过600所,同10000余家企业建立了战略合作伙伴关系,累计培养和输送85余万IT职业化人才进入IT行业,得到了社会各界广泛的认可。
Java的集合类被定义在Java.util包中,主要有4种集合,分别为List、Queue、Set和Map;其中List是一种很常见的数据类型,是一种有序的集合,有三个实现类,分别是ArrayList、Vector和linkedList。
1.ArrayList:基于数组实现,添加或删除速度慢,查询速度快,线程不安全。
ArrayList是使用较广泛的List实现类,其内部数据结构基于数组实现,提供对List的添加(add)、删除(remove)和访问(get)功能。
ArrayList的缺点是元素必须连续存储,当需要在ArrayList中间插入或删除元素时,需要将所有元素移到要插入或删除的节点之后,其修改成本很高,因此ArrayList不适合随机插入和删除操作,更适合随机查找和遍历的操作 ArrayList在定义时不需要指定数组的长度。
ArrayList不需要在定义时指定数组的长度,当数组的长度不能满足存储要求时,ArrayList会创建一个新的、更大的数组,并将数组中的现有数据复制到新的数组中。
2.Vector:基于数组实现,添加和删除速度慢,查询速度快,线程安全。
Vector数据结构和ArrayList一样是基于数组的,不同的是Vector支持线程同步,即在同一时间只允许一个线程对Vector进行写入(添加、删除、修改),以增加多线程环境下数据的一致性。
但是,它需要对Vector实例进行频繁的锁和释放锁的操作,因此,Vector的读写效率一般来说要低于ArrayList。
3.linkedList:基于双向链接表的实现,添加和删除速度快,查询速度慢,线程不安全。
linkedList采用双向链表结构来存储元素,在对linkedList进行插入和删除操作时,只要在相应的节点上插入或删除元素,并将个节点元素的下一个节点的指针指向该节点,所以数据变化很小,所以随机插入和删除的效率很高。
然而,对linkedList的随机访问需要从链头到节点进行遍历,这使得随机访问非常缓慢。
此外,linkedList提供了List接口中没有定义的方法,用于操作链表头部和尾部的元素,所以它有时可以作为堆栈、队列或者双向队列使用。