马太效应 发表于 2017-8-14 23:06:27

Java暑期学习Day39

今天是第39天,渐渐的要把思绪理清楚{:10_254:} (大眼萌光头QAQ)

static/image/hrline/5.gif<。)#)))≦

支持队列操作的Queue


1.API之Queue
public interface Queue<E>
extends Collection<E>
<收集的对象加入至尾端,取得对象时从前端>
   除了基本的Collection操作之外,队列还提供额外的插入,提取和检查操作。

这些方法中的每一种都有两种形式:如果操作失败,则抛出一个异常,另一种返回一个特殊值( null或false ,具体取决于操作)。 插入操作的后一种形式专门设计用于容量限制的Queue实现; 在大多数实现中,插入操作不能失败。





Summary of Queue methods Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()


(显著区别:Queue接口在add()、remove、element()等方法操作失败时会抛出异常,而offer()、poll()、peek()等方法操作失败时会返回特定值)



Modifier and Type(修饰符和类型) Method and Description(方法与说明)
boolean add(E e)
将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后返回IllegalStateException
如果当前没有可用空间,则抛出IllegalStateException。

E element()
检索,但不删除,这个队列的头。
boolean offer(E e)
如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。
E peek()
检索但不删除此队列的头,如果此队列为空,则返回 null 。
E poll()
检索并删除此队列的头,如果此队列为空,则返回 null 。
E remove()
检索并删除此队列的头。


ps.接口Deque与其有类似之处——
如Deque中定义addFirst()、getLast()等方法操作失败时会抛出异常
            而offerFirst()、pollLast()等方法操作失败时会返回特定值

static/image/hrline/line7.png


同时Queue中某些方法与Deque中某些方法同义(。・∀・)ノ
如Queue中的add()相当于Deque中的addLast()
             offer()             offerLast()
             poll()            pollFirst()
             remove()            removeFirst()
             element()         getFirst()
             peek()            peekFirst()


2.代码辅助理解
package collection;

import java.util.ArrayDeque;
import java.util.Deque;
import static java.lang.System.out;

public class Stack {
        private Deque elems = new ArrayDeque();
        private int capacity;

        public Stack(int capacity) {
                this.capacity = capacity;
        }

        public boolean push(Object elem) {
                if (isFull()) {
                        return false;

                }
                return elems.offerFirst(elem);
        }

        private boolean isFull() {

                return elems.size() + 1 > capacity;
        }

        public Object pop() {
                return elems.pollLast();
        }

        public Object peek() {
                return elems.peekLast();
        }

        public int size() {
                return elems.size();
        }

        public static void main(String[] args) {

                Stack stack = new Stack(5);
                stack.push("Justin");
                stack.push("Monica");
                stack.push("Irene");
                out.println(stack.pop());
                out.println(stack.pop());
                out.println(stack.pop());

        }

}
结果是——

Justin
Monica
Irene

ps.import static是静态导入







页: [1]
查看完整版本: Java暑期学习Day39