在arrayList中获取特定对象

时间:2016-01-26 06:38:52

标签: java android arraylist

如何在学校列表中获取List<Student>数据?

List<School> schools = new ArrayList<School>();

School school_aaa = new School();

school_aaa.setName( "aaa" );

Student student_aaa_001 = new Student();
student_aaa_001.setName( "aaa_001" );
student_aaa_001.setAge( 17 );
student_aaa_001.setId( 21345678 );
Student student_aaa_002 = new Student();
student_aaa_002.setName( "aaa_002" );
student_aaa_002.setAge( 13 );
student_aaa_002.setId( 6789876 );

List<Student> students = new ArrayList<Students>();
students.add( student_aaa_001 );
students.add( student_aaa_002 );
school_aaa.setStudents( students );

schools.add("aaa");

我只有学校名称。 但它无法使用indexOf方法。 因为那只是同一个对象。

这意味着我需要让学校对象不是学校名称。

如何找到School对象。

这里是DataTypes。

Student.java enter image description here

School.java enter image description here

3 个答案:

答案 0 :(得分:4)

Java 8的流API通过过滤为您提供了相当简洁的语法。如果您认为只有一个具有指定名称的学校,您可以使用findFirst()方法:

School aaaSchool = schools.stream()
                          .filter(x -> x.getName().equals("aaa"))
                          .findFirst()
                          .orElse(null);

如果你不能,你将需要处理学校的子列表:

List<School> aaaSchools = schools.stream()
                                 .filter(x -> x.getName().equals("aaa"))
                                 .collect(Collectors.toList());         

答案 1 :(得分:4)

好像你正试图在学校名单中找到一所特定的学校。如果这不是您想要做的,请告诉我。

我将如何做到这一点:

public School findSchool(String schoolName)
{
    // Goes through the List of schools.
    for (School i : schools)
    {
        if (i.getName.equals(schoolname))
        {
            return i;   
        }   
    }
}

答案 2 :(得分:2)

for(int cnt = 0; cnt < schools.size; cnt++){
  if(schools.get(cnt).getSchooname.equalIgnorecase("Your school name")){
    // cnt is your index
  }    
}