使用迭代器从 Circular Queue 中的一个位置获取项目
Getting an item from one position in a Circular Queue using an iterator
我有一个 Circular queue,但我不知道如何从某个位置获取某个项目,header 将是:public E peeki(int index) 并使用通用迭代器。
根据 Queue 的设计,您不能这样做。您只能查看 Queue 的 header。
如果要按索引访问元素,请使用 List 而不是 Queue。
正如 Nilesh 所指出的,Queue 不适用于索引。无论如何,您可以使用 Queue 和迭代器通过自定义行为实现您自己的 class 以按索引查找元素。如果您正在寻找这种情况,请考虑以下示例:
public class QueueExample<E> {
private Queue<E> queue = new LinkedList<>();
public void add(E item) {
queue.add(item);
}
public E peek(int index) {
E item = null;
Iterator<E> iterator = queue.iterator();
while (iterator.hasNext()) {
E temp = iterator.next();
if (index-- == 0) {
item = temp;
break;
}
}
return item;
}
public static void main(String[] args) {
QueueExample<String> queueExample = new QueueExample<>();
queueExample.add("One");
queueExample.add("Two");
queueExample.add("Three");
System.out.println(queueExample.peek(0));
System.out.println(queueExample.peek(2));
System.out.println(queueExample.peek(1));
System.out.println(queueExample.peek(4));
}
}
输出(如预期):
One
Three
Two
null
希望对您有所帮助。
我有一个 Circular queue,但我不知道如何从某个位置获取某个项目,header 将是:public E peeki(int index) 并使用通用迭代器。
根据 Queue 的设计,您不能这样做。您只能查看 Queue 的 header。
如果要按索引访问元素,请使用 List 而不是 Queue。
正如 Nilesh 所指出的,Queue 不适用于索引。无论如何,您可以使用 Queue 和迭代器通过自定义行为实现您自己的 class 以按索引查找元素。如果您正在寻找这种情况,请考虑以下示例:
public class QueueExample<E> {
private Queue<E> queue = new LinkedList<>();
public void add(E item) {
queue.add(item);
}
public E peek(int index) {
E item = null;
Iterator<E> iterator = queue.iterator();
while (iterator.hasNext()) {
E temp = iterator.next();
if (index-- == 0) {
item = temp;
break;
}
}
return item;
}
public static void main(String[] args) {
QueueExample<String> queueExample = new QueueExample<>();
queueExample.add("One");
queueExample.add("Two");
queueExample.add("Three");
System.out.println(queueExample.peek(0));
System.out.println(queueExample.peek(2));
System.out.println(queueExample.peek(1));
System.out.println(queueExample.peek(4));
}
}
输出(如预期):
One
Three
Two
null
希望对您有所帮助。