📌  相关文章
📜  Java中的 LinkedBlockingDeque retainAll() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:53.181000             🧑  作者: Mango

Java中的 LinkedBlockingDeque retainAll() 方法及示例

在 Java中,LinkedBlockingDeque是一种双向队列,允许在队尾和队头同时进行入队和出队操作,并且在多线程环境下保证线程安全。LinkedBlockingDeque提供了retainAll()方法,用于保留队列中包含在指定集合中的元素,将不属于指定集合的元素从队列中删除。

语法

LinkedBlockingDeque retainAll() 方法的语法如下:

public boolean retainAll(Collection<?> c)

参数说明:

  • c:指定的集合。

返回值:true表示队列发生了变化,false表示队列未发生变化。

示例

下面是使用LinkedBlockingDeque retainAll()方法的示例代码:

import java.util.concurrent.LinkedBlockingDeque;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        LinkedBlockingDeque<String> deque = new LinkedBlockingDeque<>();

        deque.add("apple");
        deque.add("banana");
        deque.add("orange");
        deque.add("watermelon");

        System.out.println("原始队列:");
        System.out.println(deque);

        String[] fruits = {"banana", "watermelon"};
        boolean result = deque.retainAll(Arrays.asList(fruits));

        System.out.println("过滤后的队列:" + deque);
        System.out.println("是否发生了变化:" + result);
    }
}

输出结果:

原始队列:
[apple, banana, orange, watermelon]
过滤后的队列:[banana, watermelon]
是否发生了变化:true

在上面的示例中,创建了一个LinkedBlockingDeque对象,然后向队列中添加了四种水果。然后将含有“banana”和“watermelon”的水果过滤出来,使用LinkedBlockingDeque的retainAll()方法,最终得到了过滤后的队列。输出结果表明队列发生了变化,即元素被成功过滤。