Java教程

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。

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) {
        Deque<String> deque = new ArrayDeque<String>();
        deque.add("Ravi");
        deque.add("Vijay");
        deque.add("Ajay");
        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();
        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>();
        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);
        set.add(b1);
        set.add(b2);
        set.add(b3);
        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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4