我有一个像这样声明的ArrayBlockingQueue:
private BlockingQueue<E> queue = new ArrayBlockingQueue<E>();
现在我必须访问此队列的特定元素。 我有一个方法
public E takeElement(int j)
{
//some code
}
我必须获取队列的j元素。我怎样才能做到这一点?? THX
答案 0 :(得分:1)
你可以写:
E element = (E) queue.toArray()[j];
这可能会发出警告,但忽略这一点是安全的。
答案 1 :(得分:0)
试试这个
public E takeElement(int j) {
for(int i = 0; i < j; i++) {
E e = queue.poll();
if (i == j - 1) {
return e;
}
}
return null;
}
或基于迭代器的版本:
public E takeElement(int j) {
Iterator<E> it = queue.iterator();
for(int i = 0; it.hasNext() && i < j; i++) {
E e = it.next();
if (i == j - 1) {
return e;
}
}
return null;
}