栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础 集合-LinkedList体验

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础 集合-LinkedList体验

linkedList说明:
  1)linkedList底层维护了一个双向链表。
  2)linkedList中维护了两个属性first和last分别指向首节点和尾结点
  3)每个节点(Node)对象,里面又维护了prev、next、item三个属性,其中通过
    prev指向前一个,通过next指向后一个节点。最终实现双向链表
  4)所以linkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高

public class linkedList01 {
    public static void main(String[] args) {
        //模拟一个简单的双向链表
        Node jack = new Node("jack");
        Node tom = new Node("tom");
        Node hsy = new Node("小黄");

        //连接三个结点,形成双向链表
        //jack -> tom -> hsy
        jack.next = tom;
        tom.next = hsy;
        //hsy -> tom -> jack
        hsy.pre = tom;
        tom.pre = jack;

        Node first = jack;  //让first引用指向jack,就是双向链表的头结点
        Node last = hsy;    //让last引用指向hsp,就是双向链表的尾结点

        //从头到尾进行遍历
        while(true){
            if(first == null){  //当first为空时,表示没有了
                break;
            }
            //输出first信息
            System.out.println(first);
            first = first.next;
        }
        System.out.println("----------------------分隔线---------------------");
        //从尾到头的遍历
        while(true){
            if(last == null){  //当first为空时,表示没有了
                break;
            }
            //输出first信息
            System.out.println(last);
            last = last.pre;
        }

   //演示链表的添加对象/数据,是多久方便
   //要求,在tom----小黄,直接插入一个对象smith

        //1.先创建一个Node结点,name就是smith
        Node smith = new Node("smith");
        //下面就把smith加入到双向链表了
        smith.next = hsy;
        smith.pre = tom;
        hsy.pre = smith;
        tom.next = smith;

        System.out.println("----------------------分隔线---------------------");
        //让first 再次指向jack
        first = jack;   //让first引用指向jack,就是双向链表的头结点
        //从头到尾进行遍历
        while(true){
            if(first == null){  //当first为空时,表示没有了
                break;
            }
            //输出first信息
            System.out.println(first);
            first = first.next;
        }

        System.out.println("----------------------分隔线---------------------");
        last = hsy;
        //从尾到头的遍历
        while(true){
            if(last == null){  //当first为空时,表示没有了
                break;
            }
            //输出first信息
            System.out.println(last);
            last = last.pre;
        }

    }
}
class Node{
    public Object item; //真正存放数据
    public Node next;   //指向后一个节点
    public Node pre;    //指向前一个节点

    public Node(Object name){
        this.item = name;
    }
    public String toString(){
        return "Node name = "+ item;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号