2014-07-08 42 views
0

我成功地使用比較器按ID分類學生,並使用for循環顯示,我希望知道如何使它與迭代器發生,以及我嘗試過,但只有在控制檯中的地址,並不知道如何打印來自學生類的信息使用迭代器來處理ArrayList中的複雜對象?

public static void main(String[] args) { 
    Student stu1 = new Student("Lucy",1000,99); 
    Student stu2 = new Student("Jack",1001,22); 
    Student stu3 = new Student("Peter",1002,53); 

    ArrayList<Student> student = new ArrayList<Student>(); 
    student.add(stu1); 
    student.add(stu2); 
    student.add(stu3); 

    Collections.sort(student,new StuCOmp("id")); 
    for (int i=0; i<student.size(); i++) { 
     Student stu = student.get(i); 
     System.out.println(stu.getName() + " "+stu.getId()+ " "+stu.getGrade());  
    } 

    Iterator<Student> it = student.iterator(); 
    while(it.hasNext()){ 

     //what do I write here 
    } 
} 
+2

迭代器不具有許多方法。你有沒有檢查過uits javadoc? http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html –

+0

你基本上和使用普通的'for'循環做同樣的事情。將'it.next()'分配給臨時變量,做任何事情,重複。 – awksp

+0

http://stackoverflow.com/questions/5228687/java-best-way-to-iterate-through-an-collection-here-arraylist – AJJ

回答

1

可以遍歷像這樣在for循環 -

 for (Iterator<Student> iterator = student.iterator(); iterator.hasNext();) { 
      Student stu = iterator.next(); 
      System.out.println(stu.getName() + " "+stu.getId()+ " "+stu.getGrade()); 
     } 
+0

您不應該使用原始迭代器。使用'迭代器' –

+0

@JB:謝謝,添加它。 –

+0

@Suresh:謝謝,一旦'Iterator '被使用,不需要種姓。 –

1
Iterator itr=student.iterator(); 
    while(itr.hasNext()){ 
    Student stu=(Student)itr.next(); 
    System.out.println(stu.getName() + " "+stu.getId()+ " "+stu.getGrade()); 
+0

sys out打印對象的方式爲打印對象學生的哈希碼。沒有用它。 – AJJ

1
Iterator<Student> it = student.iterator(); 
    while(it.hasNext()){ 
     // You should write here: 
     Student stu = it.next(); 
     System.out.println(stu.getName() + " "+stu.getId()+ " "+stu.getGrade()); 
    } 
0

你可以做這樣的事情

Iterator<Student> it = student.iterator(); 
while(it.hasNext()){ 
    Student student=it.next();// you can get the students one by one 
    // Now you can get the each student info 
    //student.any attribute 
} 

這種方式是非常相似的,但for-eachiterator比快。

1

您可以避免使用迭代器並使用增強型for循環。

for (Student st : student) 
    System.out.println(st.getName() + " "+st.getId()+ " "+st.getGrade()); 
0
Iterator itr=student.iterator(); 
    while(itr.hasNext()){ 
    Student stu=(Student)itr.next(); 
    System.out.println("whatever you want to print");