天天看點

java隊列deque,Java中的queue和deque

1、Queue

隊列, 一種常用的資料結構,可以将隊列看做是一種特殊的線性表,該結構遵循的先進先出原則。Java中,LinkedList實作了Queue接口,因為LinkedList進行插入、删除操作效率較高

相關方法:

boolean offer(E e):将元素追加到隊列末尾,若添加成功則傳回true。

E poll():從隊首删除并傳回該元素。

E peek():傳回隊首元素,但是不删除

示例:

public class QueueDemo {

public static void main(String [] args) {

Queue queue = new LinkedList();

//追加元素

queue.offer("one");

queue.offer("two");

queue.offer("three");

queue.offer("four");

System.out.println(queue);

//從隊首取出元素并删除

String poll = queue.poll();

System.out.println(poll);

System.out.println(queue);

//從隊首取出元素但是不删除

String peek = queue.peek();

System.out.println(peek);

System.out.println(queue);

//周遊隊列,這裡要注意,每次取完元素後都會删除,整個

//隊列會變短,是以隻需要判斷隊列的大小即可

while(queue.size() > 0) {

System.out.println(queue.poll());

}

}

}

運作結果:

[one, two, three, four]

one

[two, three, four]

two

[two, three, four]

two

three

four

2、Deque

雙向隊列,指該隊列兩端的元素既能入隊(offer)也能出隊(poll),如果将Deque限制為隻能從一端入隊和出隊,則可實作棧的資料結構。對于棧而言,有入棧(push)和出棧(pop),遵循先進後出原則

常用方法如下:

void push(E e):将給定元素”壓入”棧中。存入的元素會在棧首。即:棧的第一個元素

E pop():将棧首元素删除并傳回。

示例:

public class DequeDemo {

public static void main(String[] args) {

Deque deque = new LinkedList();

deque.push("a");

deque.push("b");

deque.push("c");

System.out.println(deque);

//擷取棧首元素後,元素不會出棧

String str = deque.peek();

System.out.println(str);

System.out.println(deque);

while(deque.size() > 0) {

//擷取棧首元素後,元素将會出棧

System.out.println(deque.pop());

}

System.out.println(deque);

}

}

運作結果:

[c, b, a]

c

[c, b, a]

c

b

a

[]