私は2つのクラスを持ち、それぞれがIteratorを返します。そこにはStudentという名前の値を返すクラスがあります。このコードでは、あるクラスを反復処理することができます。私は、Machineクラスで2番目のクラスを追加することなく、他のクラスを反復処理する方法があるかどうかを知りたいと思います。ここのように私のコードがどのように見えるかです:ただ1つのイテレータで2つのリストを反復するJava
import java.util.*;
import java.lang.reflect.*;
class ClassRoom1{
ArrayList<Student> al = new ArrayList<Student>();
Student st;
public ClassRoom1(){
st = new Student("Michael", "Smith", 12);
al.add(st);
st = new Student("Jennifer", "Lopez", 13);
al.add(st);
}
public void addStudent(String name, String lastName, int age) {
Student st = new Student(name, lastName, age);
al.add(st);
}
public ArrayList getStudents(){
return al;
}
public Iterator returnIter(){
Iterator iter = getStudents().iterator();
return iter;
}
}
class ClassRoom2{
ArrayList<Student> al = new ArrayList<Student>();
Student st;
public ClassRoom2(){
st = new Student("Brian", "Con", 15);
al.add(st);
st = new Student("Megan", "Bell", 15);
al.add(st);
}
public void addStudent(String name, String lastName, int age) {
Student st = new Student(name, lastName, age);
al.add(st);
}
public ArrayList getStudents(){
return al;
}
public Iterator returnIter(){
Iterator iter = getStudents().iterator();
return iter;
}
}
public class Machine{
Student st;
ClassRoom1 clrm1 = new ClassRoom1();
ClassRoom2 clrm2 = new ClassRoom2();
public static void main(String[] args){
Machine mch = new Machine();
ArrayList al = new ArrayList();
Iterator iter = al.iterator();
mch.printStudens(iter);
}
void printStudens(Iterator iter){
iter = clrm1.returnIter();
while(iter.hasNext()){
st = (Student) iter.next();
System.out.println("\nName: " + st.getName() + "\nLast name: " + st.getLastName() + "\nAge: " + st.getAge());
}
}
}
私はJennifer Lopezを満たすために教室1に行きます:) さらに、ループ内に2つのイテレータを使用する必要があります。 – vulkanino
本当にイテレータを使用する必要がありますか? – hurtledown
私はかなり理解していません。内部ループを持つ必要はありませんが、別のイテレータを持つ必要があります。あなたの質問を編集して、あなたのループで何をしようとしているかについてさらに詳しい情報を提供できますか? – Gray