Hi i,m JinXiang
⭐ 前言 ⭐
本篇文章主要介绍java List集合的三种实现类ArrayList,LinkedList,Vector以及部分理论知识
?欢迎点赞 ? 收藏 ⭐留言评论 ?私信必回哟?
?博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言
什么是List集合?
ArrayList,LinkedList,Vector都是隶属于List集合的一种;
集合List
- List代表了有序可重复集合,可直接根据元素的索引来访问。
- List接口常用的实现类有:ArrayList、LinkedList、Vector。
为什么要使用List集合
List集合的特点:
集合中的元素允许重复
集合中的元素是有顺序的,各元素插入的顺序就是各元素的顺序
集合中的元素可以通过索引来访问或者设置
List集合总结:
1==):ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
2==):Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
3==):LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
ArrayList,LinkedList,Vector的相同点与区别:
相同点:
1、ArrayList、Vector、LinkedList类均在java.util包中,均为可伸缩数组,即可以动态改变长 度的数组。
2、都有序,有索引,可重复。(此处的索引是可以通过索引查找该元素)
不同点:
1、ArrayList和Vector都是在内存中开辟连续内存来存储数据,有一个初始化的容量大小,可以通过序号来访问元素,虽然速度较快,但是插入元素时需要移动容器中的元素,所以对数据的插入操作比较麻烦。同时对储存空间进行动态的扩容时,为了提高效率,每次都是增加多个存储单元,Vector默认是原来的两倍,ArrayList是1.5倍。
Vector默认采用的是立即初始化容积值的操作,也可以设置初始化容积和步长值,构造器中只有一个初始化容积值,默认的扩容步长值为0
2、Array List和Vector最大的区别是synchronized的使用,Array List没有一个方法是同步的,而Vector的绝大多数的方法都是直接或者间接是同步的所以Vector线程是安全的,而Array List线程是不安全的。
Array List添加元素的add方法调用的是私有的add方法,进行扩容时是用size+1的方式,调用grow方法,再调用参数为minCapacity的newCapacity方法而remove删除方法则是调用的fastRemove方法
Vector中add方法与Array List基本相同,而remove方法调用的是removeElement方法 ,删除指定位置的元素再调用removeElementAt方法
3、LinkedList是采用双向列表来实现的,对数据的索引需要从列表头开始遍历,因此用于随机访问则效率比较低。但是插入元素时不需要对数据进行移动,因此插入效率较高。同时,LinkedList也是线程不安全的容器。
Linked List中的节点定义的是一个静态内部类;添加操做add调用的是linkLast方法,是在链表尾部添加数据,在指定位置新增数据,则针对索引需要进行合法性检查;查找指定元素的下标索引值用indexOf方法;删除指定位置上的元素用int类型参数的remove方法调用的是unlike方法。
使用List集合(实操)
1、ArrayList(增删改查)
import org.junit.Test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class vector { /** * ArrayList的 * 增删改查操作 * */ @Test public void ArrayList_Test(){ ArrayList arrayList = new ArrayList<>(); //默认空间10 //新增--添加一个数据 arrayList.add("HELLO WORLD!"); //新增--添加一个数据(在此列表中的指定位置插入指定的元素) arrayList.add(1,"张三"); //删除--删除一个数据 arrayList.remove("你好"); //删除--删除一个数据(删除该列表中指定位置的元素) arrayList.remove(1); //删除--删除列表中所有数据 arrayList.clear(); //修改--修改一个数据(用指定的元素替换此列表中指定位置的元素) arrayList.set(1, "李四"); //返回此列表中的元素数 arrayList.size(); //查看所有信息 System.out.println(arrayList); } }
2、LinkedList(增删改查)
import org.junit.Test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class vector { /** * LinkedList的 * 增删改查操作 * */ @Test public void LinkedList_Test(){ LinkedList linkedList = new LinkedList<>(); //新增--添加一个数据 linkedList.add("HELLO WORLD!"); //新增--添加一个数据(在此列表中的指定位置插入指定的元素) linkedList.add(1,"张三"); //删除--删除一个数据 linkedList.remove("你好"); //删除--删除一个数据(删除该列表中指定位置的元素) linkedList.remove(1); //删除--但不删除此列表的头(第一个元素) linkedList.element(); //删除--检索并删除此列表的头(第一个元素) linkedList.poll(); //删除--删除列表中所有数据 linkedList.clear(); //修改--修改一个数据(用指定的元素替换此列表中指定位置的元素) linkedList.set(1, "李四"); //返回此列表中的元素数 linkedList.size(); //查看所有信息 System.out.println(linkedList); //获取元素--获取此列表中指定位置的元素 linkedList.get(1); //获取元素--此列表中的第一个元素 linkedList.getFirst(); //获取元素--此列表中的最后一个元素 linkedList.getLast(); } }
3、Vector(增删改查)
import org.junit.Test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class vector { /** * Vector的 * 增删改查操作 * */ public void Vector_Test(){ Vector v = new Vector<>(); //新增--新增一个数据 v.add("你好"); //在新增--添加一个数据(在此列表中的指定位置插入指定的元素) v.add(1,"张三"); //删除--删除一个数据 v.remove("你好"); //删除--删除一个数据(删除该列表中指定位置的元素) v.remove(1); //删除--删除列表中所有数据 v.clear(); //增加空间容量(需要增加此量的容量,以确保它可以至少保存最小容量参数指定的组件数。) v.ensureCapacity(5); //增加5 //比较--与指定对象进行比较,来判断是否相等 v.equals("张三"); //获取元素--获取此列表中指定位置的元素 v.get(1); //返回哈希值 v.hashCode(); //获取元素--获取此量中指定元素第一次出现的索引 v.indexOf("你好"); //插入--在指定的位置插入指定对象作为该量中的第一个index v.insertElementAt("你好", 1); //自动排序(以正确的顺序返回该列表中的元素迭代器) v.iterator(); } }
Vector类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以根据需要增长或缩小,以适应在创建Vector之后添加和删除项目。有关详细信息,请参阅博客 jdk_api_1.8-JAVA中文版API手册(免费版)-CSDN博客 中提供的APL工具,查看各个实体文档和子类文档进行深入了解!
总结不易,希望uu们不要吝啬亲爱的?哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正?
- LinkedList ArrayList Vector java Listlinkedlist arraylist vector list linkedlist arraylist vector java linkedlist arraylist框架vector 相同点linkedlist arraylist vector linkedlist arraylist vector linkedlist arraylist java linkedlist arraylist java p11 arraylist java list linkedlist arraylist arraylist机制vector