如何使用循环列出实例内容?

时间:2015-11-13 18:52:31

标签: java android

我是Android开发的新手。在下面,我知道如何循环学校列表。但是,我不知道如何使用循环来显示学校的学生,因为每个学校实例都是手动创建的。有没有办法可以显示每个学校及其学生使用循环?感谢。

我的数据如下:

school id: A1, "Point Grey"
Student name: "Kent", "Age": 43
Student name: "Jane", "Age": 18
Student name: "Winnie", "Age": 19 

school id: B1, "Prince of Wales"
Student name: "Steven", "Age": 11
Student name: "Michelle", "Age": 30
Student name: "Ronald", "Age": 20

我的目录如下:

public class DIRECTORY {
   private Map<String, SCHOOL> schools = new HashMap<String, SCHOOL>();


    public void setSchools(Map<String, SCHOOL> schoolsMap) {
    this.schools =  schoolsMap;
    }

 public Map<String, SCHOOL> getSchools() {return this.schools;}


 public void addSchool(String schoolId, String schoolName) {
     SCHOOL school = new SCHOOL();
     school.setSchoolId(schoolId);
     school.setSchoolName(schoolName);
     schools.put(schoolId,school);

   }

    public SCHOOL getSchoolById(String schoolId) {
        schools.get(schoolId);
    }

   }

我的学校课程如下:

public class SCHOOL {
private String schoolId;
private String schoolName;
private List<STUDENT> students = new ArrayList<>();

//getter and setter for schoolid and school name 
public void setStudents(STUDENT students) {
    this.students = (List<STUDENT>) students;
}
public List<STUDENT> getStudents() {return this.students;}
public void addStudent(String names, String age) {
    STUDENT student = new STUDENT();
    student.setNames(names);
    student.setAge(age);
    students.add(student);
}

我的学生课程如下:

public class STUDENT {
private String names;
private String age;
//getter and setter for name and age

}

我的数据如下:

private static DIRECTORY createDummySchool(){

    DIRECTORY directory = new DIRECTORY();
    directory.addSchool("A1", "Point Grey");
    directory.addSchool("B1", "Prince of Wales");

    SCHOOL schoolA1 = directory.getSchoolById("A1");

    schoolA1.addStudent("kent", "43");
    schoolA1.addStudent("Winnie", "19");
    schoolA1.addStudent("Jane", "18");

    SCHOOL schoolB1 = directory.getSchoolById("B1");
    schoolB1.addStudent("Steven", "11");
    schoolB1.addStudent("Michelle", "30");
    schoolB1.addStudent("Ronald", "20");

    return directory;
}

我的目录列表如下:

public String outputDirectorylist(List<DIRECTORY> directorylist) {
    StringBuilder sb = new StringBuilder();
    for (DIRECTORY directory:directorylist) {
        sb.append(school.getSchoolId());
        sb.append(",");
        sb.append(school.getSchoolName());
        sb.append(";");
    }

    return String.valueOf(sb);

}

我的主要课程如下:

 .....
 DIRECTORY directorylist = directory.getSchools();
 // How to loop the student in each school?
 Log.d(tag, outputSchool(directorylist));
 .....

2 个答案:

答案 0 :(得分:2)

Map<String,SCHOOL> schools = directory.getSchools();
for( SCHOOL school: schools.values() ){
    for( STUDENT student: school.getStudents() ){
        Log.d( ... student.getName() + " " + student.getAge() ... );
    }
}

假设SCHOOL类中有一个getStudents,并且getSchools从类DIRECTORY返回Map。

答案 1 :(得分:1)

一种方法是覆盖类中的toString()

E.g。

public class STUDENT {
     private String names;
     private String age;
    //getter and setter for name and age

    public String toString() {
        StringBuilder b = new StringBuilder();
        b.append("name: ");
        b.append(names == null ? " " : names);
        b.append(" age: ");
        b.append(age == null ? " " : age);
        return b.toString();
    }
}

调用Log.d("LOG", " " + listOfStundes)将打印listOfStundes中定义的toString()内容。您可以将相同的原则应用于您的其他类