¿Cómo puedo obtener datos de List<Student> en la lista de escuelas?

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");

Solo tengo el nombre de la escuela. Pero no pudo usar el método indexOf. porque eso solo funciona con el mismo objeto.

Eso significa que necesito obtener el objeto School, no el nombre de la escuela.

¿Cómo encuentro el objeto School?

Aquí están los tipos de datos.

Student.java ingrese la descripción de la imagen aquí

School.java ingrese la descripción de la imagen aquí

3
bubu uwu 26 ene. 2016 a las 09:38

3 respuestas

La mejor respuesta

Parece que está tratando de encontrar una escuela específica en la lista de escuelas. Si esto no es lo que está tratando de hacer, hágamelo saber.

Así es como lo haría:

public School findSchool(String schoolName)
{
    // Goes through the List of schools.
    for (School i : schools)
    {
        if (i.getName.equals(schoolname))
        {
            return i;   
        }   
    }
    return null;
}
4
shiva 29 mar. 2020 a las 12:03
for(int cnt = 0; cnt < schools.size; cnt++){
  if(schools.get(cnt).getSchooname.equalIgnorecase("Your school name")){
    // cnt is your index
  }    
}
2
Pavya 26 ene. 2016 a las 06:47

La API de transmisión de Java 8 le brinda una sintaxis bastante ordenada para hacerlo, mediante el filtrado. Si puede asumir que solo hay una escuela con un nombre de pila, puede usar findFirst() método:

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

Si no puede, tendrá que hacerlo con una sublista de escuelas:

List<School> aaaSchools = schools.stream()
                                 .filter(x -> x.getName().equals("aaa"))
                                 .collect(Collectors.toList());         
4
Mureinik 26 ene. 2016 a las 06:44