zoukankan      html  css  js  c++  java
  • List简介(一)

    Java集合系列

    List

    在Collection中,List集合是有序的,Developer可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问、遍历元素。

    List集合中,常用的是ArrayList和LinkedList这两个类。其中,ArrayList底层通过数组实现,随着元素的增加而动态扩容。而LinkedList底层通过链表来实现,随着元素的增加不断向链表的后端增加节点。

    特点

    1. 有序:可以保证元素放入的顺序。

      通过给每个元素编号,可以通过索引的方式来操作这个集合。

    2. List中可以包含重复的元素。

    3. List可以添加null元素,而且可以添加多个null元素

    常用方法

    ArrayList

    ArrayList是Java集合框架中使用最多的一个类,是一个数组队列,线程不安全集合。它继承于AbstractList,实现了List, RandomAccess, Cloneable, Serializable接口。

    • 实现List,得到了List集合框架基础功能;
    • 实现RandomAccess,获得了快速随机访问存储元素的功能,RandomAccess是一个标记接口,没有任何方法;
    • 实现Cloneable,得到了clone()方法,可以实现克隆功能;
    • 实现Serializable,表示可以被序列化,通过序列化去传输,典型的应用就是hessian协议。

    扩容的问题:

    int newCapacity = oldCapacity + (oldCapacity >>  1);//右移 效率高
    
    //初始化容量10->10+(10>>1)->15 ->15+(15>>1)->22->33
    
    //通过以下代码进行数组的扩容
    
    elementData  = Arrays.copyOf(elementData, newCapacity);
    

    具有如下特点:

    • 容量不固定,随着容量的增加而动态扩容(阈值基本不会达到)
    • 有序集合(插入的顺序==输出的顺序)
    • 插入的元素可以为null
    • 改查效率更高(相对于LinkedList来说)
    • 线程不安全

    【Array List 基本操作】

    LinkedList

    LinkedList是一个双向链表,每一个节点都拥有指向前后节点的引用。相比于ArrayList来说,LinkedList的随机访问效率更低。

    它继承AbstractSequentialList,实现了List, Deque, Cloneable, Serializable接口。

    • 实现List,得到了List集合框架基础功能;
    • 实现Deque,Deque 是一个双向队列,也就是既可以先入先出,又可以先入后出,说简单些就是既可以在头部添加元素,也可以在尾部添加元素;
    • 实现Cloneable,得到了clone()方法,可以实现克隆功能;
    • 实现Serializable,表示可以被序列化,通过序列化去传输,典型的应用就是hessian协议。

    LinkedList基本操作

    ArrayList和LinkedList区别:

    1. ArrayList是基于数组的,而LinkedList基于链表的

    2. ArrayList 查询快,增删慢;

      LInkedList 查询慢,增删快;

    3. ArrayList、LinkedList使用场景

      查询业务多的情况下,适合ArrayList.

      增删业务多的情况下,适合LinkedList.

      如果不确定查询多还是增删多,就用ArrayList;

      二八法则:20%是增删相关,80%是查询相关

  • 相关阅读:
    图解 perspective && perspective-origin && transform3d && transform-origin
    【CSS3练习】3D盒子制作
    【CSS3练习】在圆上旋转的菜单
    【CSS3练习】transform 2d变形实例练习
    -webkit-overflow-scrolling : touch 快速滚动 回弹 效果
    【canvas】blackboard 黑板
    【canvas】高级功能一 变形
    【canvas】基础练习三 图片
    【canvas】基础练习二 文字
    【canvas】基础练习一 图形
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13084356.html
Copyright © 2011-2022 走看看