arrayList与linkedList

arrayList

优点
1。支持自动改变大小的功能
2。可以灵活的插入元素
3 可以灵活的删除元素

集合中存放的依然是对象的引用而不是对象本身。

在Java中实例化数组

** 声明Java数组变量时,只声明数组本身的变量(引用
声明实际上并不创建数组。**

int [] array;

array = new int [10];

这样为创建一个类型数组, int其中包含10个 int变量的空间。

之前的Java数组示例创建了 int一个原始数据类型的数组。

创建一个对象引用数组。例如:

'String [] stringArray = new String [10];'

Java允许创建对任何类型对象(对任何类的实例)的引用数组。

ArrayList 底层采用数组实现,当使用不带参数的构造方法生成 ArrayList 对象 时,实际上会在底层生成一个长度为 10 的 Object 类型数组

如果增加的元素个数超过了 10 个,那么 ArrayList 底层会新生成一个数组,长 度为原数组的 1.5 倍+1,然后将原数组的内容复制到新数组当中,并且后续 增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该 过程。

**

常见的方法

**

JAVA.util.ArrayList

E表示泛型 ArrayList是一个泛型类、

JAVA.util.ArrayList的一些方法:

+rrayList() 构造函数 创建一个空的列表 size为0

+add(o:E):void 在list的末尾加上一个元素o

== +add(index:int,o:E):void== 在指定的地方插入一个元素

+clear():void 从list删除所有 的元素

==+remove(index;int ):boolean == 去除指定的index的元素 返回true

+remove(o:object):boolean 删除list第一次元素o 返回true

+size():int 返回list中的元素个数

==+get(index :int ):E == 返回指定index 的元素、

== +contains(o: Object): boolean == 如果 list 含有元素o 返回 true

**创建 ArrayList list = new ArrayList<>()

访问`list.get(index)

更新

list.set(index,"HuLi")

返回大小list.size()
排序java.util.Collections.sort(arrsylist)

添加元素list.add("HULI")

插入一个元素list.add(index,"HULI")

删除一个元素list.remove(index)**

linkedList

1)
LinkedList 底层采用双向链表实现

它包含一个非常重要的内部类:Entry。Entry是双向链表节点所对应的数据结构,包括的属性有:
当前节点所包含的值,上一个节点,下一个节点。
(02)
从LinkedList的实现方式中可以发现,它不存在LinkedList容量不足的问题。
(03) LinkedList的克隆函数,即是将全部元素克隆到一个新的LinkedList对象中。
(04) LinkedList实现java.io.Serializable。当写入到输出流时,先写入“容量”,再依次写入“每一个节点保护的值”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。

方法

**

add(E e):在链表后添加一个元素;   
addFirst(E e):在链表头部插入一个元素;
addLast(E e):在链表尾部添加一个元素;  
push(E e):与addFirst方法一致*
remove() :移除链表中第一个元素;    
remove(E e):移除指定元素;   
removeFirst(E e):删除头,获取元素并删除;  
removeLast(E e):删除尾;  
pollFirst():删除头;
pollLast():删除尾;
pop():和removeFirst方法一致 
get(int index):按照下标获取元素;  
getFirst():获取第一个元素;  
getLast():获取最后一个元素; 
peek():获取第一个元素,但是不移除;  
peekFirst():获取第一个元素,但是不移除; 
peekLast():获取最后一个元素;
pollFirst():查询并删除头;  
pollLast():删除尾;  

arrayList 与linkedList 的一些区别

== 一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。 ==

前者是数组队列,相当于动态数组;后者为双向链表结构,也可当作堆栈、队列、双端队列

**a) ArrayList 底层采用数组实现,LinkedList 底层采用双向链表实现。

b) 当执行插入或者删除操作时,采用 LinkedList 比较好。

,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。

c) 当执行搜索操作时,采用 ArrayList 比较好 **
(因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。)

d)从效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值