Java - 使用 hasNext() 方法时出现 "cannot find symbol"错误

标签 java

我在对 ArrayList 使用 haseNext() 方法时遇到此错误:

error: cannot find symbol
while(isduplicate == false && birthdays.hasNext())

这是我的代码:

import java.util.*;


class hello  
{  
public static void main(String args[])
{
    Integer size = 4;
    Integer count = 5;
    Integer doubleinarray = 0;

    for(Integer i = 0 ; i < count ; i++) {
        List<Integer> birthdays = new ArrayList<Integer>();
        birthdays = CreateSimulator(size);
        Integer countdown = size;
        boolean isduplicate = false;

        while(isduplicate == false && birthdays.hasNext()) {
            Integer date = birthdays.get(0);
            birthdays.remove(0);
            if(birthdays.contains(date)) {
                isduplicate = true;
                doubleinarray ++;
            }
        }
    }
    System.out.println(doubleinarray / count * 100);
}

public static List<Integer> CreateSimulator(int size)
{
    List<Integer> Birthdays = new ArrayList<Integer>(size);
    Random rand = new Random();

    for(Integer i =0 ; i < size ; i++) {
        Birthdays.add(rand.nextInt(364) + 1);
    }
    return Birthdays;
}
}    

我不明白为什么它不接受 hasNext。除此之外,其余代码工作正常。

感谢您的帮助

谢谢:)

最佳答案

你必须做这样的事情:

Iterator<Integer> birthdaysIterator = birthdays.iterator();

使用birthDaysIterator,您可以调用hasNext

但现在不推荐这样做。 您最好执行正常操作,例如:

正常情况下:

for (int i = 0; i < birthdays.size(); i++) {
    System.out.println(birthdays.get(i));
}

使用 for-each 循环:

for (Integer birthday : birthdays) {
   System.out.println(birthday);
}

使用 Java 8 流:

birthdays.forEach((birthday) -> {
            System.out.println(birthday);
});

编辑:

根据@OHGODSPIDERS,如果您使用我建议的其他 3 个版本,您将遇到 ConcurrentModificationException 。为了避免这种情况,您可以坚持使用迭代器,也可以使用中间列表来保留要删除的元素,然后将它们全部删除。

示例:

List<String> toRemove = new ArrayList<>();
for (String birthday : birthdays) {
    if (someCondition) {
        toRemove.add(birthday);
    }
}
birthdays.removeAll(toRemove);

关于Java - 使用 hasNext() 方法时出现 "cannot find symbol"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47051006/

相关文章:

java - Spring 3 为 ThreadPoolTask​​Executor 设置 ThreadFactory

java - 对方付费电话要 map 吗?

java - OpenCMS中用Struts2开发cms可以吗?

java - 如何在 Javadoc 中查找所有返回类型的方法?

java - Java 中大文件的 MD5 或 SHA 哈希值

java - 为什么要在 Java 中声明一个不可变类 final?

java - 如何更新 Java Gui 中的变量?

java - 1.8.9 我的世界工艺魔法书模组

java - 我的菜单不会显示在我的数独网格上

java - 在 linux 操作系统的 java 中获取主板和硬盘的 ID?