當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Java ArrayBlockingQueue retainAll()用法及代碼示例

Java ArrayBlockingQueue 類的 retainAll() 方法僅保留指定集合中包含的 ArrayBlockingQueue 元素並刪除其餘元素。

用法:

public boolean retainAll(Collection<?> c)

參數:

這裏,參數 c 是包含要保留在 ArrayBlockingQueue 集合中的元素的集合。

指定者:

ArrayBlockingQueue 類的retainAll() 方法指定為:

retainAll in interface Collection<E>.

返回值:

如果集合因調用而改變,則retainAll() 方法返回一個布爾值'true',否則返回'false'。

拋出:

如果指定的集合不支持空元素或包含一個或多個空元素,則拋出 NullPointerException。

例子1

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;

public class ArrayBlockingQueueRetainAllExample1 {
    public static void main(String[] args) throws InterruptedException {
        List<Integer> list = new ArrayList<Integer>();
        int capacity = 100;
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
        for (int i=1;i<21;i++){
            queue.add(i);
        }
        System.out.println(" Elements in queue:" + queue);
        for (int i = 1; i < 11; i++) {
            int j = i *5;
            list.add(j);
        }
        //will give the elements in the queue which are present in list
        queue.retainAll(list);
        System.out.println(" Multiple of 5:" + queue);
    }
}

輸出:

Elements in queue:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
Multiple of 5:[5, 10, 15, 20]

例子2

import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

public class ArrayBlockingQueueRetainAllExample2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        int capacity = 100;
        ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(capacity);
            queue.add("Reema");
            queue.add("Ranjeeta");
            queue.add("Rani");
            queue.add("Sukla");
            queue.add("Raj");
        System.out.println("Students in the class:");
        for (String str:queue){
            System.out.println(str);
        }
        list.add("Raj");
        list.add("Rani");
        list.add("Ranjeeta");
        queue.retainAll(list);
        System.out.println("Students failed:");
        for (String str:queue){
            System.out.println(str);
        }
    }
}

輸出:

Students in the class:
Reema
Ranjeeta
Rani
Sukla
Raj
Students failed:
Ranjeeta
Rani
Raj

例子3

import java.util.TreeSet;
import java.util.concurrent.ArrayBlockingQueue;

public class ArrayBlockingQueueRetainAllExample3 {
    public static void main(String[] args) {
        TreeSet<Integer> list = new TreeSet<Integer>();
        int capacity = 100;
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);
        for (int i=1;i<21;i++){
            queue.add(i);
        }
        list.add(101);
        list.add(null);
        queue.retainAll(list);
        System.out.println("Queue = "+queue);
    }
}

輸出:

Exception in thread "main" java.lang.NullPointerException
	at java.util.TreeMap.put(TreeMap.java:563)
	at java.util.TreeSet.add(TreeSet.java:255)
	at com.javaTpoint.ArrayBlockingQueueRetainAllExample3.main(ArrayBlockingQueueRetainAllExample3.java:15)

由於 TreeSet 不允許空元素,所以它會給出 NullPointerException,如上所示。





相關用法


注:本文由純淨天空篩選整理自 Java ArrayBlockingQueue retainAll() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。