如何在Iterator <object>中存储对象?

时间:2015-08-07 17:20:09

标签: java iterator

所以我有一个变量字符串,我想将它存储在一个字符串类型的Iterator中,但我一直收到一个错误,指出它是不兼容的类型。如何在迭代器中存储字符串变量?

Incompatible Types:
Required: java.util.Iterator <java.lang.String>
Found: java.lang.String

这是我到目前为止所做的:

Iterator<?> perEntry = entries.iterator();
Iterator<String> ids;
while (perEntry.hasNext()) {
    ids = perEntry.next().getId();
}

任何帮助将不胜感激,谢谢!

P.S。我忘了包括这个,但是如何归还这个迭代器?我收到一条错误,声明它找到了java.util.ObjectType,它需要java.util.Iterator。

1 个答案:

答案 0 :(得分:2)

你误解了迭代器。迭代器等效于正在迭代的集合中的对象。相反,它就像是指向这样一个对象的“指针”。

如果您有Iterator<Entity>,则可以通过拨打Entity来获取next()。但是,迭代器本身仍然是Entity上的迭代器。它无法转换为String的迭代器。

但是,您可以将迭代器中的所有字符串收集到集合中,如下所示:

List<String> idList = new ArrayList<>();
while (perEntry.hasNext()) {
    idList.add(perEntry.next().getId());
}

一旦您的idList列表中包含数据,您就可以获得其迭代器。它将是Iterator<String>,因为idList元素的类型为String

Iterator<String> ids = idList.iterator();