集合中ArrayList和LinkedList

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值