zoukankan      html  css  js  c++  java
  • java学习day15--API-ArrayList--LinkedList

    ArrayList(实现类)

    概述:

    1. 存在于java.util包中。
      
    2. 内部用数组存放数据,封装了数组的操作,每个对象都有下标。
      
    3. 内部数组默认初始容量是10。如果不够会以1.5倍容量增长。
      
    4. 查询快,增删数据效率会降低。
      

    特点:

    • 是list接口的实现类, 拥有list接口的特点, 有序, 有索引, 底层使用数组实现, 方便查询
    • 可以使用Collection抽象类和List接口的通用方法

    常用构造方法

    方法 说明
    ArrayList() 无参构造

    常用特有方法

    注意: remove() 可以按照下标删除, 也可以直接指定元素值, 如果元素是Integer类型, 哪么可能会出现意外的结果

    如下实例:

    // 创建ArrayList对象
    List<Integer> a1 = new ArrayList<>();
    a1.add(1);
    a1.add(2);
    a1.add(3);
    a1.add(4);
    a1.add(100);
    
    // remove() 可以按照下标删除, 也可以直接指定元素值
    System.out.println(a1.remove(2)); // 按照下标删除
    System.out.println(a1.remove(Integer.valueOf(100))); // 按照元素进行删除
    

    由上例可见: 直接传入数字会默认按照下标进行删除, 只有传入包装类型的时候才会按元素删除

    LinkedList(实现类)

    概述:

    双向链表,两端效率高。底层就是数组和链表实现的。

    特点:

    • List接口的实现类, 拥有List接口的特点, 可以重复, 有索引, 有序, 底层是一个链表结构的实现. 查询比ArrayList复杂, 但是适用于增删业务
    • 可以使用Collection抽象类和List接口的通用方法
    • 双向链表:下标遍历效率低,迭代器遍历效率高

    常用构造方法

    方法 说明
    LinkedList() 无参构造

    常用特有方法

    返回值 方法 说明
    void addFirst(E e) 添加首元素
    void addLast(E e) 添加尾元素
    E getFirst() 获取首 元素
    E getLash() 获取尾元素
    E removeFirst() 移除首元素, 并返回被移除元素的值
    E removeLash() 移除尾元素, 并返回被移除元素的值

    测试案例:

    双向链表:下标遍历效率低,迭代器遍历效率高

    public class Test1_ArrayList {
    
           public static void main(String[] args) throws Exception {
                  LinkedList ll = new LinkedList ();
                  for (int i = 0; i < 100000; i++) {
                         ll.add(100);
                  }
                  f1(ll);
                  f2(ll);
           }
           private static void f2(LinkedList<Integer> ll) {
                  long t = System.currentTimeMillis();
                  Iterator it = ll.iterator();
                  while(it.hasNext()) {
                         it.next();
                  }
                  t = System.currentTimeMillis()-t;
                  System.out.println("=====iterator========="+t);//16
           }
           private static void f1(LinkedList<Integer> ll) {
                  long t = System.currentTimeMillis();
                  for (int i = 0; i < ll.size(); i++) {
                         ll.get(i);
                  }
                  long t1 = System.currentTimeMillis();
                  System.out.println("~~~~for~~~~~~~"+(t1-t));//9078
           }
    }
    
  • 相关阅读:
    中国软件杯——基于计算机视觉的交通场景智能应用
    《架构实践--软件架构设计的过程》读书笔记
    《架构实践--软件架构设计的过程》读书笔记
    软件架构师Refined Architecture部分读后感
    pycharm安装TensorFlow失败如何解决
    python聚类树图
    极限测试三
    极限测试进度2
    极限测试进度1
    赛题分析
  • 原文地址:https://www.cnblogs.com/liqbk/p/12930991.html
Copyright © 2011-2022 走看看