📅  最后修改于: 2023-12-03 15:16:29.870000             🧑  作者: Mango
LinkedBlockingDeque是Java中的一个阻塞双向队列数据结构,即支持在队列头部和尾部插入和删除元素,并且在元素达到队列容量时将阻塞插入操作或删除操作的线程。LinkedBlockingDeque中的drainTo()方法可以将队列中的元素转移到另一个集合中。
public int drainTo(Collection<? super E> c)
该方法返回一个整数,表示队列中转移的元素数量。
import java.util.concurrent.LinkedBlockingDeque;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
LinkedBlockingDeque<String> deque = new LinkedBlockingDeque<>();
deque.add("A");
deque.add("B");
deque.add("C");
ArrayList<String> list = new ArrayList<>();
int count = deque.drainTo(list);
System.out.println("队列中转移的元素数量为:" + count);
System.out.println("另一个集合中的元素为:" + list);
System.out.println("队列中剩余元素为:" + deque);
}
}
队列中转移的元素数量为:3
另一个集合中的元素为:[A, B, C]
队列中剩余元素为:[]
在上面的示例代码中,我们创建了一个LinkedBlockingDeque对象,并向其中添加了三个元素。然后,我们创建了一个ArrayList对象来存储从队列中转移出来的元素,使用drainTo()方法将队列中的所有元素转移到ArrayList对象中。最后,我们打印出转移元素的数量,ArrayList对象中的元素和队列中剩余的元素。