Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何使用Deque';s_Java_Deque - Fatal编程技术网

Java:如何使用Deque';s

Java:如何使用Deque';s,java,deque,Java,Deque,我正在学习如何使用这个物体 布尔加法(E) 将指定的元素插入此deque表示的队列中 (换句话说,在本文件末尾)如果可能的话 在不违反容量限制的情况下立即返回true 成功后,如果没有空格,则抛出一个非法状态异常 当前可用。 我对“如果当前没有可用的空间”感到困惑。我没有看到任何设置大小的地方,这是否意味着没有中的空间,没有JVM 我正在研究如何制作一个包含5个值的Deque,我想添加一个值,并在值为5时删除最旧的值 我希望这是有意义的,如果没有请让我详细说明,我会 非常感谢SOF社区 如何使用

我正在学习如何使用这个物体

布尔加法(E)

将指定的元素插入此deque表示的队列中 (换句话说,在本文件末尾)如果可能的话 在不违反容量限制的情况下立即返回true 成功后,如果没有空格,则抛出一个
非法状态异常
当前可用。


我对“如果当前没有可用的空间”感到困惑。我没有看到任何设置大小的地方,这是否意味着没有中的空间,没有JVM

我正在研究如何制作一个包含5个值的Deque,我想添加一个值,并在值为5时删除最旧的值

我希望这是有意义的,如果没有请让我详细说明,我会

非常感谢SOF社区

如何使用Deque(然后就是将它包装成您希望用几个
if
语句支持的方法):

Deque deq=newlinkedlist()//要具有固定大小,请使用ArrayQue
deq.addFirst(“a”);
System.out.println(deq.peekFirst())//a-只是看一下,不要移除
deq.addFirst(“b”);
System.out.println(deq.peekFirst())//B
System.out.println(deq.peekLast())//A.
deq.addLast(“c”);
System.out.println(deq.peekLast())//C
deq.添加(“d”);
System.out.println(deq.peekLast())//D
System.out.println(deq.pollLast())//d-返回并移除
System.out.println(deq.pollLast())//C

如果您想使用某种循环缓冲区,您可能希望改用此Apache Commons集合-

这就是我使用
Deque的方法-
很简单,但我认为它解决了您试图解决的问题

public class DequeExample {
    Deque<Integer> deque = new ArrayDeque<>();

    public static void main(String[] args) {

        DequeExample dequeExample = new DequeExample();

        // adding elements
        for( int idx = 0; idx < 9; idx++){
            dequeExample.addNewest(idx);
        }
    }

    private void addNewest(int newest){
        if(deque.size() == 5){
            System.out.println("Queue at capacity, removing element before adding more.");
            Integer e = deque.removeLast();
            System.out.println("Removed: " + e);
        }

        deque.push(newest);
        System.out.println("Added: " + newest );
        System.out.println(deque);
    }
}
public类dequeen示例{
Deque Deque=新的ArrayDeque();
公共静态void main(字符串[]args){
DequeExample DequeExample=新的DequeExample();
//添加元素
for(intidx=0;idx<9;idx++){
dequeExample.addlatest(idx);
}
}
私有void addlatest(int-latest){
如果(deque.size()==5){
System.out.println(“按容量排队,在添加更多元素之前删除元素”);
整数e=deque.removeLast();
系统输出打印项次(“删除:+e);
}
推送(最新);
System.out.println(“添加:“+最新”);
系统输出打印LN(deque);
}
}

“我看不到任何设置大小的地方”-这是因为它是特定于实现的。从文档中可以看出:“大多数Deque实现对其可能包含的元素数量没有固定的限制,但此接口支持容量受限的Deque以及没有固定大小限制的Deque。”例如,请参见。如果您查看实现类,Deque是一个接口,他们有一个构造函数,您可以在其中指定初始容量。我正在研究如何创建Deque:不要创建Deque实现。只需在类中使用一个元素,如果达到大小限制,则在添加元素之前删除最旧的元素。。
public class DequeExample {
    Deque<Integer> deque = new ArrayDeque<>();

    public static void main(String[] args) {

        DequeExample dequeExample = new DequeExample();

        // adding elements
        for( int idx = 0; idx < 9; idx++){
            dequeExample.addNewest(idx);
        }
    }

    private void addNewest(int newest){
        if(deque.size() == 5){
            System.out.println("Queue at capacity, removing element before adding more.");
            Integer e = deque.removeLast();
            System.out.println("Removed: " + e);
        }

        deque.push(newest);
        System.out.println("Added: " + newest );
        System.out.println(deque);
    }
}