JAVA三种List结构实现的数据结构ArrayList,Vector,LinkedList解析

您所在的位置:网站首页 if结构的实现 JAVA三种List结构实现的数据结构ArrayList,Vector,LinkedList解析

JAVA三种List结构实现的数据结构ArrayList,Vector,LinkedList解析

2023-07-12 23:04| 来源: 网络整理| 查看: 265

import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class Test { public static void main(String[] args) { //ArrayList的特点,实现了List接口,储存有序的,可以重复的数据,查找和添加效率高,时间复杂度为O(1) //底层使用了Object[]数组存储,删除和插入效率低,时间复杂度O(n) //线程不安全 ArrayList arrayList = new ArrayList(); //底层会初始化数组,数组的长度为10,JDK7的是饿汉式直接创建了 Object[] objects = new Object[10]; arrayList.add("AA"); //JDK8.0的版本是首次添加元素时初始化数组objects = new Object[10];懒汉式的创建 objects[0] = "AA"; arrayList.add("BB"); objects[1] = "BB"; //确定ArrayList长度的情况下推荐直接写new ArrayList(10); //当要添加第11个元素时,底层的数组已满,需要扩容,则默认扩容为原长度的1.5倍,并将原有元素复制到新的数组 //Vector的特点,实现了List接口,储存有序的,可以重复的数据 //底层使用了Object[]数组存储 //线程安全 Vector vector = new Vector(); Object[] objects1 = new Object[10];//初始化数组,长度为10 vector.add("AA"); objects1[0] = "AA"; vector.add("BB"); objects1[1] = "BB"; //LinkedList的特点,实现了List接口,储存有序的,可以重复的数据 //底层使用了双向链表存储,插入和删除效率低,时间复杂度为O(n) //线程不安全,删除和插入操作效率高,时间复杂度为O(1) LinkedList list = new LinkedList();//底层啥也没有,用的双向链表 list.add("AA");//将AA封装到Node对象中,list对象的首尾均指向此node对象 list.add("BB");//将BB封装到Node对象中,首指向AA,尾指向BB //LinkedList使用的是双向链表,不需要考虑扩容问题,查找和添加效率高,时间效率高,时间复杂度为O(n),添加操作为O(1) } class Node { Node first; Object object; Node last; } }

import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class Test { public static void main(String[] args) { //ArrayList的特点,实现了List接口,储存有序的,可以重复的数据,查找和添加效率高,时间复杂度为O(1) //底层使用了Object[]数组存储,删除和插入效率低,时间复杂度O(n) //线程不安全 ArrayList arrayList = new ArrayList(); //底层会初始化数组,数组的长度为10,JDK7的是饿汉式直接创建了 Object[] objects = new Object[10]; arrayList.add("AA"); //JDK8.0的版本是首次添加元素时初始化数组objects = new Object[10];懒汉式的创建 objects[0] = "AA"; arrayList.add("BB"); objects[1] = "BB"; //确定ArrayList长度的情况下推荐直接写new ArrayList(10); //当要添加第11个元素时,底层的数组已满,需要扩容,则默认扩容为原长度的1.5倍,并将原有元素复制到新的数组 //Vector的特点,实现了List接口,储存有序的,可以重复的数据 //底层使用了Object[]数组存储 //线程安全 Vector vector = new Vector(); Object[] objects1 = new Object[10];//初始化数组,长度为10 vector.add("AA"); objects1[0] = "AA"; vector.add("BB"); objects1[1] = "BB"; //LinkedList的特点,实现了List接口,储存有序的,可以重复的数据 //底层使用了双向链表存储,插入和删除效率低,时间复杂度为O(n) //线程不安全,删除和插入操作效率高,时间复杂度为O(1) LinkedList list = new LinkedList();//底层啥也没有,用的双向链表 list.add("AA");//将AA封装到Node对象中,list对象的首尾均指向此node对象 list.add("BB");//将BB封装到Node对象中,首指向AA,尾指向BB //LinkedList使用的是双向链表,不需要考虑扩容问题,查找和添加效率高,时间效率高,时间复杂度为O(n),添加操作为O(1) } class Node { Node first; Object object; Node last; } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3