Close

Java Collections - ArrayBlockingQueue.drainTo() Examples

Java Collections Java Java API 


Class:

java.util.concurrent.ArrayBlockingQueue

java.lang.Objectjava.lang.Objectjava.util.AbstractCollectionjava.util.AbstractCollectionjava.util.CollectionCollectionjava.util.AbstractQueuejava.util.AbstractQueuejava.util.QueueQueuejava.util.concurrent.ArrayBlockingQueuejava.util.concurrent.ArrayBlockingQueuejava.util.concurrent.BlockingQueueBlockingQueuejava.io.SerializableSerializableLogicBig

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);
}
}

Output

queue: [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);
}
}

Output

queue: [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);
}
}

Output

queue: []
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);

}
}

Output

queue: [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);
}
}

Output

queue: [1, 2, 3]
list: [1]
queue: [2, 3]




See Also