java中什么是链表什么是HashMap

LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针Pointer)。

使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

实例:

package com.ys.link;

public class DoublePointLinkedList {
    private Node head;//头节点
    private Node tail;//尾节点
    private int size;//节点的个数
    
    private class Node{
        private Object data;
        private Node next;
        
        public NodeObject data){
            this.data = data;
        }
    }
    
    public DoublePointLinkedList){
        size = 0;
        head = null;
        tail = null;
    }
    
    //链表头新增节点
    public void addHeadObject data){
        Node node = new Nodedata);
        ifsize == 0){//如果链表为空,那么头节点和尾节点都是该新增节点
            head = node;
            tail = node;
            size++;
        }else{
            node.next = head;
            head = node;
            size++;
        }
    }
    
    //链表尾新增节点
    public void addTailObject data){
        Node node = new Nodedata);
        ifsize == 0){//如果链表为空,那么头节点和尾节点都是该新增节点
            head = node;
            tail = node;
            size++;
        }else{
            tail.next = node;
            tail = node;
            size++;
        }
    }
    
    //删除头部节点,成功返回true,失败返回false
    public boolean deleteHead){
        ifsize == 0){//当前链表节点数为0
            return false;
        }
        ifhead.next == null){//当前链表节点数为1
            head = null;
            tail = null;
        }else{
            head = head.next;
        }
        size--;
        return true;
    }
    //判断是否为空
    public boolean isEmpty){
        return size ==0);
    }
    //获得链表的节点个数
    public int getSize){
        return size;
    }
    
    //显示节点信息
    public void display){
        ifsize >0){
            Node node = head;
            int tempSize = size;
            iftempSize == 1){//当前链表只有一个节点
                System.out.println"["+node.data+"]");
                return;
            }
            whiletempSize>0){
                ifnode.equalshead)){
                    System.out.print"["+node.data+"->");
                }else ifnode.next == null){
                    System.out.printnode.data+"]");
                }else{
                    System.out.printnode.data+"->");
                }
                node = node.next;
                tempSize--;
            }
            System.out.println);
        }else{//如果链表一个节点都没有,直接打印[]
            System.out.println"[]");
        }
    }

}

登录后复制

以上就是java中什么是链表的详细内容,更多请关注风君子博客其它相关文章!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注