zoukankan      html  css  js  c++  java
  • 队列和栈

    队列遵循先进先出(FIFO First Input First Output )的原则。

    Queue接口,同时使得LinkedList实现了该接口(选择LinkedList实现Queue的原因在于Queue经常要进行插入和删除的操作,而LinkedList在这方面效率较高)。

    • boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。
    • E poll():从队首删除并返回该元素。
    • E peek():返回队首元素,但是不删除
      1. Queue<String> queue = new LinkedList<String>();
      2. queue.offer("a");
      3. queue.offer("b");
      4. queue.offer("c");
      5. System.out.println(queue); // [a, b, c]
      6. String str = queue.peek();
      7. System.out.println(str); // a
      8. while (queue.size() > 0) {
      9.     str = queue.poll();
      10.     System.out.print(str + " "); // a b c
      11. }
      12. Deque是Queue的子接口,定义了所谓“双端队列”即从队列的两端分别可以入队(offer)和出队(poll),LinkedList实现了该接口。
      13. 如果将Deque限制为只能从一端入队和出队,则可实现“栈”(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop。

        遵循先进后出(FILO First Input Last Output )的原则

      • void push(E e):将给定元素"压入"栈中。存入的元素会在栈首。即:栈的第一个元素
      • E pop():将栈首元素删除并返回。
          1. Deque<String> stack = new LinkedList<String>();
          2. stack.push("a");
          3. stack.push("b");
          4. stack.push("c");
          5. System.out.println(stack); // [c, b, a]
          6. String str = stack.peek();
          7. System.out.println(str); // c
          8. while (stack.size() > 0) {
          9.     str = stack.pop();
          10.     System.out.print(str + " "); // c b a
          11. }

          LinkedHashMap实现有序的Map

        • Map 接口的哈希表和链表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,LinkedHashMap维护着一个双向循环链表。此链表定义了迭代顺序,该迭代顺序通常就是将存放元素的顺序。

          需要注意的是,如果在Map中重新存入以有的key,那么key的位置会不会发生改变,只是将value值替换。

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/jcfxl/p/5735132.html
Copyright © 2011-2022 走看看