访问 ArrayDeque 中的每个元素
Accessing each element in ArrayDeque
是否可以在每次迭代中访问存储在ArrayDeque中的元素?由于 ArrayDeque 没有 get 方法,所以我很难访问每个元素。在下面的示例中,我有一个整数 arraydeque,我正在尝试使用迭代器检索元素,我想检查该值是否为 2。如果是,我想将它从 ArrayDeque 中删除,但它给了我错误。
import java.lang.*;
import java.util.*;
public class ArrayDequeTest {
public static void main(String[] args)
{
ArrayDeque<Integer> a = new ArrayDeque<Integer>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
a.add(2);
System.out.println("Elements added !!");
Iterator i = a.iterator();
System.out.println("\nRemoving the element whose value is 2");
while(i.hasNext())
{
if(i==2) // please suggest as to how i can compare
{
i.remove();
}
}
}
您缺少对 next()
的调用以推进迭代器并检索当前值:
Iterator<Integer> i = a.iterator();
while (i.hasNext())
{
if (i.next() == 2) // Here!
{
i.remove();
}
}
请注意,顺便说一句,ArrayDeque
是 Collection
,因此您可以使用更优雅的 removeIf
:
a.removeIf(v -> v == 2);
如果您使用的是 Java8,您可以使用 lambda 表达式,只需一行即可完成此删除操作。
a.removeIf(e -> e == 2);
是否可以在每次迭代中访问存储在ArrayDeque中的元素?由于 ArrayDeque 没有 get 方法,所以我很难访问每个元素。在下面的示例中,我有一个整数 arraydeque,我正在尝试使用迭代器检索元素,我想检查该值是否为 2。如果是,我想将它从 ArrayDeque 中删除,但它给了我错误。
import java.lang.*;
import java.util.*;
public class ArrayDequeTest {
public static void main(String[] args)
{
ArrayDeque<Integer> a = new ArrayDeque<Integer>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
a.add(2);
System.out.println("Elements added !!");
Iterator i = a.iterator();
System.out.println("\nRemoving the element whose value is 2");
while(i.hasNext())
{
if(i==2) // please suggest as to how i can compare
{
i.remove();
}
}
}
您缺少对 next()
的调用以推进迭代器并检索当前值:
Iterator<Integer> i = a.iterator();
while (i.hasNext())
{
if (i.next() == 2) // Here!
{
i.remove();
}
}
请注意,顺便说一句,ArrayDeque
是 Collection
,因此您可以使用更优雅的 removeIf
:
a.removeIf(v -> v == 2);
如果您使用的是 Java8,您可以使用 lambda 表达式,只需一行即可完成此删除操作。
a.removeIf(e -> e == 2);