使用Iterable的类的多个迭代器

时间:2014-02-19 09:37:07

标签: java android iterator

有这个课程

public class MyClass {

   private List<Integer> list1 = new ArrayList<Integer>();
   private List<String> list2 = new ArrayList<String>();

   . . .
}

是否可以在类中实现Iterable以使此代码有效?:

MyClass a = new MyClass();

for(Integer i: a) {
   <do something with i>
}

for(String s: a) {
   <do something with s>
}

让我澄清一下,我知道如何以其他方式进行迭代,即使我知道我可以为每个列表类型创建一个迭代器,我想知道这种特定的迭代形式是否可行。

2 个答案:

答案 0 :(得分:2)

为了使其正常工作,您可以实现java.lang.Iterable接口并覆盖Iterable#iterator()中的ClassA方法,但之后只会编译其中一个循环,因为迭代将仅在 上应用于其中一个列表。

更好地为列表提供访问器,然后执行:

for(Integer i: a.getIntList()) {
   <do something with i>
}

for(String s: a.getStringList()) {
   <do something with s>
}

答案 1 :(得分:1)

您不能使用绑定类型列表提供泛型类型,因此您必须决定StringInteger - 或者让MyClass通过方法公开这两个集合