【问题标题】:One Iterator Different Types of LinkedList一种不同类型的链表迭代器
【发布时间】:2015-10-10 22:41:28
【问题描述】:

我仍在学习迭代器,它们非常有趣。但是我有一个问题:

我制作了两个DoubleLinkedList,每个都有一个不同的通用<Type>。我想只使用一个Iterator 遍历每一个,如何更改我的Iterator 上的通用<>

DLL<String> aList = new DLL<>();
DLL<Integer> bList = new DLL<>();
DLL<String>.MyIterator<String> it = aList.Iterator();

使用“it”迭代器我只能遍历 aList 而不能遍历 bList。

it = new bList.Iterator();

这段代码没有帮助,因为它仍然认为它正在使用字符串。

【问题讨论】:

  • 如果要迭代两个列表,则需要两个迭代器。如果要在第一个列表之后迭代第二个列表,则需要将第二个迭代器分配给不同的变量,因为它的类型不同。
  • 所以没有办法使用一个迭代器,遍历第一个列表,当我完成后,我会让它遍历第二个列表?
  • 有迭代器链接之类的概念,但基本上,您仍然需要为每个迭代列表创建一个迭代器。这就是iterator() 方法通常所做的。
  • 好的,谢谢!

标签: java iterator listiterator


【解决方案1】:

我不熟悉您的DLLDoubleLinkedList 课程,但我认为这并不重要并且会混淆问题。这是我使用简单的java.util.List 的答案。

如果您确实必须使用相同的Iterator 变量,请使用通用通配符&lt;?&gt;。但是,请注意,您必须强制转换对象,就像在前泛型 Java 中一样:

List<String> stringList = new ArrayList<>();
List<Integer> intList = new ArrayList<>();
Iterator<?> it = stringList.iterator();
String string = (String) it.next();
it = intList.iterator();
Integer integer = (Integer) it.next();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 2017-10-22
    • 2021-07-29
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2011-05-20
    • 2013-09-23
    相关资源
    最近更新 更多