我仍在学习迭代器,它们非常有趣。不过我有一个问题:
我做了两个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();
此代码没有帮助,因为它仍然认为它正在使用字符串。
最佳答案
我不熟悉你的 DLL
或DoubleLinkedList
类,但我认为这并不重要并且会混淆问题。这是我使用简单的 java.util.List
的答案.
如果你确实必须使用相同的 Iterator
变量,使用通用通配符 <?>
。但是,请注意,您必须强制转换对象,就像在前泛型 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();
关于java - 一个迭代器不同类型的 LinkedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059711/