个性化阅读
专注于IT技术分析

Java Deque接口

本文概述

Java Deque接口是一个线性集合, 支持两端的元素插入和删除。 Deque是“双头队列”的首字母缩写。


和接口声明

public interface Deque<E> extends Queue<E>

Java Deque接口的方法

方法 描述
boolean add(object) 它用于将指定的元素插入此双端队列, 并在成功后返回true。
boolean offer(object) 用于将指定的元素插入此双端队列。
Object remove() 它用于检索和删除此双端队列的头部。
Object poll() 它用于检索和删除此双端队列的头部, 如果此双端队列为空, 则返回null。
Object element() 它用于检索但不删除此双端队列的头部。
Object peek() 它用于检索但不删除此双端队列的头部, 如果此双端队列为空, 则返回null。

java arraydeque层次结构

ArrayDeque类

ArrayDeque类提供使用双端队列和可调整大小的数组的便利。它继承了AbstractCollection类并实现了Deque接口。

关于ArrayDeque类的要点是:

  • 与Queue不同, 我们可以从两侧添加或删除元素。
  • ArrayDeque中不允许使用null元素。
  • 在没有外部同步的情况下, ArrayDeque不是线程安全的。
  • ArrayDeque没有容量限制。
  • ArrayDeque比LinkedList和Stack更快。

ArrayDeque层次结构

在页面右侧显示的图中给出了ArrayDeque类的层次结构。

ArrayDeque类声明

我们来看一下java.util.ArrayDeque类的声明。

public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable

Java ArrayDeque示例

import java.util.*;
public class ArrayDequeExample {
   public static void main(String[] args) {
   //Creating Deque and adding elements
   Deque<String> deque = new ArrayDeque<String>();
   deque.add("Ravi");  
   deque.add("Vijay");   
   deque.add("Ajay");  
   //Traversing elements
   for (String str : deque) {
   System.out.println(str);
   }
   }
}

输出:

Ravi
Vijay
Ajay

Java ArrayDeque示例:offerFirst()和pollLast()

import java.util.*;
public class DequeExample {
public static void main(String[] args) {
	Deque<String> deque=new ArrayDeque<String>();
	deque.offer("arvind");
	deque.offer("vimal");
	deque.add("mukul");
	deque.offerFirst("jai");
	System.out.println("After offerFirst Traversal...");
	for(String s:deque){
		System.out.println(s);
	}
	//deque.poll();
	//deque.pollFirst();//it is same as poll()
	deque.pollLast();
	System.out.println("After pollLast() Traversal...");
	for(String s:deque){
		System.out.println(s);
	}
}
}

输出:

After offerFirst Traversal...
jai
arvind
vimal
mukul
After pollLast() Traversal...
jai
arvind
vimal

Java ArrayDeque示例:书

import java.util.*;  
class Book {  
int id;  
String name, author, publisher;  
int quantity;  
public Book(int id, String name, String author, String publisher, int quantity) {  
    this.id = id;  
    this.name = name;  
    this.author = author;  
    this.publisher = publisher;  
    this.quantity = quantity;  
}  
}  
public class ArrayDequeExample {  
public static void main(String[] args) {  
	Deque<Book> set=new ArrayDeque<Book>();  
    //Creating Books  
    Book b1=new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8);  
    Book b2=new Book(102, "Data Communications & Networking", "Forouzan", "Mc Graw Hill", 4);  
    Book b3=new Book(103, "Operating System", "Galvin", "Wiley", 6);  
    //Adding Books to Deque 
    set.add(b1);  
    set.add(b2);  
    set.add(b3);  
    //Traversing ArrayDeque
    for(Book b:set){  
    System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);  
    }  
}  
}

输出:

101 Let us C Yashwant Kanetkar BPB 8
102 Data Communications & Networking Forouzan Mc Graw Hill 4
103 Operating System Galvin Wiley 6
赞(0)
未经允许不得转载:srcmini » Java Deque接口

评论 抢沙发

评论前必须登录!