zoukankan      html  css  js  c++  java
  • java 集合LinkedList

    LinkedList 内部是用双向链表实现的。可以为空,可以重复,是有序的,线程不安全。

    实现原理

    属性: 

    1.size 长度

    2.node<E> first 第1各元素

    3.node<E> last 最后一个元素

    内部类

    Node<E> 里面有3个属性,E element, Node<E> pre, Node<E> next; 构造方法NOde(Node pre,E e,Node next)

    方法

    #增

    1.add(E e)  默认是往链表的最后一个添加元素。所以我们要获取最后一个元素、然后new一个node出来,new的时候用Node<E>的构造方法,参数是(last,E,null)因为之前获取最后一个元素,放在我new的元素前一个,然后第2个参数就是当前元素的值,因为加在最后一个所以next默认是null。然后 我们要判断刚刚获取的最后一个元素是不是null,如果是null的,证明他是第1次加入链表里面,所以我们这个时候要把 属性first 给刚刚新new出来的对象。如果不是null,那么我们刚刚获取最后一个元素的next指向new出来的对象。最后size++就可以了

    #查询

     2.get(index) 根据索引获取,这边用到1次2分法查询。先判断 index 和 size>>1 比较,如果index> siez>>1的话,那么就表示要查询的index在size/2的下半段。那这样只要循环下半段,如果小于的话,那就在上半段。只要循环上半段,

    3删除

    reomve(index)  这边记得 最后要把删的元素设置成null

  • 相关阅读:
    Java代理模式精讲之静态代理,动态代理,CGLib代理
    Java文件编译与反编译:javac命令和javap命令
    CAS机制总结
    try-catch-finally 与返回值的修改
    不同分布式锁的实现
    缓存算法(页面置换算法)-FIFO、LFU、LRU
    多线程的线程开销
    谈谈如何来查看GC日志
    JVM中常见的垃圾收集器
    前端大牛 博客集
  • 原文地址:https://www.cnblogs.com/tangwangming/p/8793924.html
Copyright © 2011-2022 走看看