不遍历实现Iterable的类

时间:2019-06-13 10:54:48

标签: java loops iterator iteration iterable

下面的代码给我带来了无法编译的错误,并给了我以下错误:“ foreach不适用于类型'Bag <\ java.lang.Integer>'”。

我不知道问题出在哪里,因为“ Bag”类正在实现“ Iterable”,因此,我想,循环应将“ Bag”视为“ Iterable”。拜托,你能为我澄清一下情况吗?

~/.hgrc

2 个答案:

答案 0 :(得分:2)

问题出在您的main方法中。经过一些简单的修复后,此方法有效:

public static void main(String[] args) {
    Bag<Integer> a = new Bag<>();
    a.add(5);
    a.add(10);
    for (int w : a) {
        System.out.println(w);
    }
}

首先,Bag初始化-<>丢失了,没有它没有为我编译。

然后在println中,您无法调用w.iterator(),因为wint,它没有这种方法。不确定在那里想要实现什么。

答案 1 :(得分:0)

public static void main(String[] args) {
    Bag<Integer> a = new Bag();
    a.add(5);
    a.add(10);
    for (int w : a) {
        System.out.println(w);
    }
}

您不能迭代整数。它用于迭代收集。您只需要更改System.out.println(w);

如果您使用的是Java 8 然后,您可以直接使用

进行迭代
a.iterator().forEachRemaining(n -> System.out.println(n));