• Java连载83-单向链表、双向链表、collections常用方法


    一、单向链表

    1.单向链表:每个元素都称为节点(Entry),每个节点都由两部分组成

    2.单向链表的注意点:

    (1)单向链表每一个节点在内存中存储上在空间位置上是无规律的;

    (2)为什么单向链表的查询效率变低​?因为单向链表中的每个元素在空间的存储位置上没有规律,也没有顺序,那么在查找某个元素的时候,必须从头节点​挨着往后找,直到找到为止。

    (3)为什么单向链表的​增删效率高?因为链表中每个元素存储空间是没有顺序的,删除或者添加某个元素,只需要让指针重新指向即可,不需要将其他​元素进行唯一,所以随机增删效率高。

    (4)伪代码

    public class Linked{
    
      //节点
    
      Entry entry;
    
      //内部类
    
      static class Entry{
    
        Object o;
    
        Entry next;
    
       }
    
    }

    (5)举例代码

    package com.bjpowernode.java_learning;
    
    /**
    
     * 使用java语言用来模拟单向链表
    
     * @author lenovo1
    
     *
    
     */
    
    public class D83_1_SingleLinkedList {
    
      public static void main(String[] args) {
    
       
    
      }
    
      //节点
    
      //Field
    
      Entry entry;
    
     
    
    //  Constructor
    
      D83_1_SingleLinkedList(){
    
        //只有一个头节点
    
        entry = new Entry(null,null);
    
      }
    
         
    
      //静态内部类
    
      static class Entry{
    
        //Field
    
        Object data;
    
        Entry next;
    
        //Constructor
    
        Entry(){}
    
        Entry(Object data,Entry next){
    
          this.data = data;
    
          this.next = next;
    
        }
    
      }
    
    }

    二、双向链表

    1.双向链表是一个环状。

    2.双向链表的注意点:

    与单项链表的特点基本一致,查询效率变低,但是增删效率高

    3.伪代码

    public class LinkedList{
    
      //节点
    
      Entry entry;
    
      //静态内部类
    
      static class Entry{
    
        Entry previous;
    
        Object data;
    
        Entry next;
    
      }
    
    }

    三、Collections集合的常用方法

    1.boolean add(Object element);向集合中添加某个元素

    2.void clear();清空集合

    3.boolean contains(Object o);判断集合中是狗包含某个程序

    4.boolean isEmpty();判断集合是否含有元素

    5.Iterator<E> iterator();获取集合所依赖的迭代器对象

    6.boolean remove(Object o);删除集合中某个元素

    7.boolean removeAll(Collection<?> c)

    移除此collections中那些也包含在指定collections中的所有元素(可选操作)

    8.boolean retainAll(Collections<?> c)

    仅保留此collectionss中那些也包含在指定collections的元素(可选操作)

    9.int size()​;返回此collections中的元素数

    10.Object[] toArray() ;返回包含此collections中的所有元素的数组

    11.<T> T[] toArray(T[] a)返回包含此collections中的所有元素的数组,​;返回数组的运行是类型与指定数组的运行时类型​相同。​

    五、源码:

    D83_1_SingleLinkedList.java

    D83_2_CollectionsCommonMethod.java

    https://github.com/ruigege66/Java/blob/master/D83_1_SingleLinkedList.java

    https://github.com/ruigege66/Java/blob/master/D83_2_CollectionsCommonMethod.java

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料。

     

  • 相关阅读:
    window.print()分页打印
    获取输入框中光标位置
    JavaScript数据结构与算法描述-队列
    .NET中获取IP地址
    记录一次排查C#使用UI Automation获取程序元素的bug
    虚拟机为win server 2012 添加新磁盘
    为halo博客添加ssl证书(配合nginx反向代理)
    初学nginx反向代理
    公告时间轴
    hackthebox-Archetype
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12310405.html
Copyright © 2020-2023  润新知