【问题标题】:Java - Enhanced for loop for ArrayList with custom objectJava - 使用自定义对象增强 ArrayList 的 for 循环
【发布时间】:2018-02-10 12:48:12
【问题描述】:

给定这个带有 ArrayList 的 StudentList 类,它接受具有三个字段的 Student 对象:Roll number、Name 和 Marks,如何编写增强的 For Loop 而不是下面代码中编写的常规 For Loop 方法?

学生.java

public class Student {
private int rollNumber;
private String name;
private int marks;

public Student(int roll, String name, int marks){
    this.rollNumber=roll;
    this.name=name;
    this.marks=marks;
}

public int getRollNumber(){
    return this.rollNumber;
}

public String getName() {
    return name;
}

public int getMarks() {
    return marks;
  }
}

这里是带有 Main 方法的 SudentList 类

StudentList.java

import java.util.ArrayList;
import java.util.List;

public class StudentList {
public static void main(String[] args) {

Student a = new Student(1, "Mark", 80);
Student b = new Student(2, "Kevin", 85);
Student c = new Student(3, "Richard", 90);

List<Student> studentList = new ArrayList<>();
studentList.add(a);
studentList.add(b);
studentList.add(c);

for (int i = 0; i < studentList.size(); i++) {
  System.out.println("Roll number: " + 
  studentList.get(i).getRollNumber() +
                ", Name: " + studentList.get(i).getName() + ", Marks: " + 
  studentList.get(i).getMarks());
    }
  }
}

【问题讨论】:

  • for(Student student : studentList){// code} 表示学生列表中的每个学生...

标签: java for-loop arraylist


【解决方案1】:

foreach 为您提供直接对象,而不是索引

for (Student st : studentList) {
       System.out.println("Roll number: " +  st.getRollNumber() + ", Name: " + st.getName() + ", Marks: " + st.getMarks());
    }

因此,每当您看到 list.get() 时,将其替换为直接对象引用,您就完成了。

【讨论】:

  • 那么在这种情况下,Java 会处理 studentList.get(i) 部分?
  • @Econ_newbie 它通过使用迭代器以不同的方式工作。在给定的链接上阅读更多内容
  • @Econ_newbie 详见Java Language Specification
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 2011-01-20
  • 1970-01-01
  • 2012-03-20
  • 2015-03-08
  • 2019-09-06
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多