zoukankan      html  css  js  c++  java
  • 集合框架系列教材 (六)- 其他集合

    序列分先进先出FIFO,先进后出FILO 
    FIFO在Java中又叫Queue 队列 
    FILO在Java中又叫Stack 栈

    步骤1:LinkedList 与 List接口
    步骤2:双向链表 - Deque
    步骤3:队列 - Queue
    步骤4:ArrayList 与 LinkedList的区别
    步骤5:练习-使用LinkedList实现Stack栈
    步骤6:答案-使用LinkedList实现Stack栈

    示例 1 : LinkedList 与 List接口

    ArrayList一样,LinkedList也实现了List接口,诸如add,remove,contains等等方法。 详细使用,请参考 ArrayList 常用方法,在此不作赘述。

    接下来要讲的是LinkedList的一些特别的地方

    示例 2 : 双向链表 - Deque

    除了实现了List接口外,LinkedList还实现了双向链表结构Deque,可以很方便的在头尾插入删除数据

    什么是链表结构: 与数组结构相比较,数组结构,就好像是电影院,每个位置都有标示,每个位置之间的间隔都是一样的。 而链表就相当于佛珠,每个珠子,只连接前一个和后一个,不用关心除此之外的其他佛珠在哪里。

    双向链表 - Deque

    package collection;

    import java.util.LinkedList;

    import charactor.Hero;

    public class TestCollection {

        public static void main(String[] args) {

             

            //LinkedList是一个双向链表结构的list

            LinkedList<Hero> ll =new LinkedList<Hero>();

             

            //所以可以很方便的在头部和尾部插入数据

            //在最后插入新的英雄

            ll.addLast(new Hero("hero1"));

            ll.addLast(new Hero("hero2"));

            ll.addLast(new Hero("hero3"));

            System.out.println(ll);

             

            //在最前面插入新的英雄

            ll.addFirst(new Hero("heroX"));

            System.out.println(ll);

             

            //查看最前面的英雄

            System.out.println(ll.getFirst());

            //查看最后面的英雄

            System.out.println(ll.getLast());

             

            //查看不会导致英雄被删除

            System.out.println(ll);

            //取出最前面的英雄

            System.out.println(ll.removeFirst());

             

            //取出最后面的英雄

            System.out.println(ll.removeLast());

             

            //取出会导致英雄被删除

            System.out.println(ll);

             

        }

          

    }

    示例 3 : 队列 - Queue

    LinkedList 除了实现了List和Deque外,还实现了Queue接口(队列)。
    Queue是先进先出队列 FIFO,常用方法:
    offer 在最后添加元素
    poll 取出第一个元素
    peek 查看第一个元素

    队列 - Queue

    package collection;

      

    import java.util.LinkedList;

    import java.util.List;

    import java.util.Queue;

      

    import charactor.Hero;

      

    public class TestCollection {

      

        public static void main(String[] args) {

            //和ArrayList一样,LinkedList也实现了List接口

            List ll =new LinkedList<Hero>();

              

            //所不同的是LinkedList还实现了Deque,进而又实现了Queue这个接口

            //Queue代表FIFO 先进先出的队列

            Queue<Hero> q= new LinkedList<Hero>();

              

            //加在队列的最后面

            System.out.print("初始化队列: ");

            q.offer(new Hero("Hero1"));

            q.offer(new Hero("Hero2"));

            q.offer(new Hero("Hero3"));

            q.offer(new Hero("Hero4"));

              

            System.out.println(q);

            System.out.print("把第一个元素取poll()出来: ");

            //取出第一个Hero,FIFO 先进先出

            Hero h = q.poll();

            System.out.println(h);

            System.out.print("取出第一个元素之后的队列: ");

            System.out.println(q);

              

            //把第一个拿出来看一看,但是不取出来

            h=q.peek();

            System.out.print("查看peek()第一个元素: ");

            System.out.println(h);

            System.out.print("查看并不会导致第一个元素被取出来: ");

            System.out.println(q);

              

        }

           

    }

    示例 4 : ArrayList 与 LinkedList的区别

    ArrayList 与 LinkedList的区别是面试常常会问到的考题
    具体区别,详见 ArrayList 与 LinkedList的区别


    更多内容,点击了解: https://how2j.cn/k/collection/collection-linkedlist/370.html

  • 相关阅读:
    转载在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
    笔试题Multicore简答题(上)
    笔试题Multicore简答题(下)
    转载深入理解const char*p,char const*p,char *const p
    笔试题mulicore编程题
    躺在被窝看蜗居,一连看到大结局,饿了揪把馒头,咽不下去吃点咸菜,我一边吃馒头,一边吃咸菜,一把抹鼻涕,一把抹眼泪
    //向块中用程序添加属性
    带参数的多线程
    扩展数据名 删除
    无法加载程序集。错误详细信息: Autodesk.AutoCAD.Runtime.Exception: eDuplicateKey
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615498.html
Copyright © 2011-2022 走看看