1.arraylist特点及优缺点
arraylist : array数组,list列表,从名称中可看出arraylist是一个基于数组的集合
事实上arraylist就是用数组来存储信息

arraylist的特点
<1>有序
数组的特点是有序:意思是元素存入集合的顺序和取出的顺序一致

<2>可重复
可重复的意思是它里面可以存储重复的元素

<3>可为null
意思是在里面可以存储null元素

arraylist的优点
<1>查询快
只需要知道索引,马上就可以查出来,arraylist是所有容器中查询最快的一个

arraylist的缺点
<2>增删慢
为什么会增删慢?
因为数组存满了以后要扩容,扩容是先创建一个原来容量1.5倍的数组,然后把之前的元素拷贝到新数组中来,这样一来添加元素的效率就大大降低
创建1.5倍的数组

把之前元素拷贝到新数组中来

再添加数据

小知识点
(1)什么的大小(size)
大小(size)就是指元素的个数
(2)什么是容量(capacity)
容量(capacity)就是数组的长度

arraylist的创建方式
arraylist一共三个构造方法
public class arraylist<e>{
//通过无参的构造方法来创建,数组默认初始容量是10
public arraylist()
//可以指定数组的初始容量
public arraylist(int initialcapacity)
// 可以将另一个集合的元素插入到arraylist集合中,数组的初始容量就是插入集合的大小
public arraylist(collection<? extends e> c)
}
arraylist的常用方法
arraylist作为list的子类,而list又作为collection的子类,arraylist有着collection和list的所有方法
arraylist的常用方法分类

//根据索引获取元素 get(int index) //根据元素获取对应的索引 indexof(object 0) //迭代器 iterator() //添加元素 add(e) //覆盖指定位置的元素 set(int index,e element) //删除指定位置的元素 remove(int index) //清空集合 clear() //为集合创建流 stream()
arraylist是在开发中用得最频繁的容器
2.linkedlist特点及优缺点
linkedlist: linked链式,list列表,简称链表,顾名思义它是基于链表实现存储数据,并且是双向链表,所有linklist又称双向列表
public class linkedlist<e> {
private static class node<e>{
//存储数据的地方
e item;
//后一节点
node<e> next;
//前一节点
node<e> prev;
node(node<e> prev, e element, node<e> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
//用first属性来记录第一个元素,即头节点
transient node<e> first;
//用last属性来记录最后一个元素,即尾节点
transient node<e> last
}
linkedlist的特点
(1)有序
元素存入的数据和取出的数据一致

(2)可重复
在列表里面可以再存储一个相同的元素

(3)可为null
在里面可以存储null元素

linkedlist的优点
(1)增删快
只需记录前后节点即可,不需像arraylist一样,还要调整数组大小
linkedlist的缺点
(1)查询慢
即使知道索引,也需要从头部或者尾部,开始一个接一个的查
linkedlist的常用方法
linkedlist的常用方法分类

arraylist与linkedlist的比较

总结
通过比较,可得出在平常开发中,如果需要频繁的查询数据,则可以用arraylist,而需要频繁的增删,可以使用linkedlist
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论