java - 访问 ArrayDeque 中的每个元素

标签 java compiler-errors iterator 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);

关于java - 访问 ArrayDeque 中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51089846/

相关文章:

java - Retrofit2,我如何转换具有不同对象名称但相同数据类型的响应

java - 打印浮点值

xcode - 对于此SCM错误,我该怎么办?

list - 有效地合并两个列表

c++ - 如何使用基本类型 uint8_t* 的 std::iterator?

rust - Rust:如何在第一个Err或None上使一系列迭代器方法的导出短路?

java - Android Java : List of items, 单击特定时删除该特定

java - 在java中制作一个用于对多个值进行分组的模型

c++ - 错误 : '' has not been declared

c++ - std::map 迭代器和插入的行为