Java Collections Java Java API
Class:
java.util.concurrent.ArrayBlockingQueue
Methods:
public int drainTo(Collection<? super E> c)
Removes
all available elements from this queue and adds them to the given collection.
public int drainTo(Collection<? super E> c,
int maxElements)
Removes
at most the given number of available elements from this queue and adds them to the given collection.
Examples
package com.logicbig.example.arrayblockingqueue;
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.ArrayBlockingQueue;
public class DrainToExample {
public static void main(String... args) { ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(3, true, Arrays.asList(1, 2, 3)); System.out.println("queue: " + q); List<Integer> list = new ArrayList<>(); q.drainTo(list); System.out.println("list: " + list); System.out.println("queue: " + q); } }
Outputqueue: [1, 2, 3] list: [1, 2, 3] queue: []
In case if the given collection already has elements: package com.logicbig.example.arrayblockingqueue;
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.ArrayBlockingQueue;
public class DrainToExample2 {
public static void main(String... args) { ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(3, true, Arrays.asList(1, 2, 3)); System.out.println("queue: " + q); List<Integer> list = new ArrayList<>(); list.add(0); q.drainTo(list); System.out.println("list: " + list); System.out.println("queue: " + q); } }
Outputqueue: [1, 2, 3] list: [0, 1, 2, 3] queue: []
In case if the queue is empty: package com.logicbig.example.arrayblockingqueue;
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.ArrayBlockingQueue;
public class DrainToExample3 {
public static void main(String... args) { ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(3); System.out.println("queue: " + q); List<Integer> list = new ArrayList<>(); q.drainTo(list); System.out.println("list: " + list); System.out.println("queue: " + q); } }
Outputqueue: [] list: [] queue: []
In case of an exception package com.logicbig.example.arrayblockingqueue;
import java.util.Arrays; import java.util.List; import java.util.concurrent.ArrayBlockingQueue;
public class DrainToExample4 {
public static void main(String... args) { ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(3, true, Arrays.asList(1, 2, 3)); System.out.println("queue: " + q); List<Integer> list = Arrays.asList(0); try { q.drainTo(list); } catch (Exception e) { System.out.println(e); } System.out.println("list: " + list); System.out.println("queue: " + q);
} }
Outputqueue: [1, 2, 3] java.lang.UnsupportedOperationException list: [0] queue: [1, 2, 3]
Specifying the max number of elements to train. package com.logicbig.example.arrayblockingqueue;
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.ArrayBlockingQueue;
public class DrainToExample5 {
public static void main(String... args) { ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(3, true, Arrays.asList(1, 2, 3)); System.out.println("queue: " + q); List<Integer> list = new ArrayList<>(); q.drainTo(list, 1); System.out.println("list: " + list); System.out.println("queue: " + q); } }
Outputqueue: [1, 2, 3] list: [1] queue: [2, 3]
|
|