java deque,Java Deque接口

本文概述

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

和接口声明

public interface Deque extends Queue

Java Deque接口的方法

方法

描述

boolean add(object)

它用于将指定的元素插入此双端队列, 并在成功后返回true。

boolean offer(object)

用于将指定的元素插入此双端队列。

Object remove()

它用于检索和删除此双端队列的头部。

Object poll()

它用于检索和删除此双端队列的头部, 如果此双端队列为空, 则返回null。

Object element()

它用于检索但不删除此双端队列的头部。

Object peek()

它用于检索但不删除此双端队列的头部, 如果此双端队列为空, 则返回null。

7ecf1fe6534d3c6c37501884477a93f0.png

ArrayDeque类

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

关于ArrayDeque类的要点是:

与Queue不同, 我们可以从两侧添加或删除元素。

ArrayDeque中不允许使用null元素。

在没有外部同步的情况下, ArrayDeque不是线程安全的。

ArrayDeque没有容量限制。

ArrayDeque比LinkedList和Stack更快。

ArrayDeque层次结构

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

ArrayDeque类声明

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

public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable

Java ArrayDeque示例

import java.util.*;

public class ArrayDequeExample {

public static void main(String[] args) {

//Creating Deque and adding elements

Deque deque = new ArrayDeque();

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 deque=new ArrayDeque();

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 set=new ArrayDeque();

//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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值