Java recupera objetos de listas de objetos según los atributos del objeto
paquete?prueba;
importar?java.beans.IntrospectionException;
importar?java.beans.PropertyDescriptor;
¿importar? java.lang.reflect.InvocationTargetException;
importar?java.lang.reflect.Method;
importar?java.util.ArrayList;
importar?java .util.Arrays;
importar?java.util.Iterator;
¿clase pública?AList?extends?ArrayList?{
/* *
?*?
?*/
privado?static?final?long?serialVersionUID?=?-5626405721508120479L;
public?A?getSubject(String?name,?Object?value)
throws?IllegalAccessException,?IllegalArgumentException,
InvocationTargetException,?IntrospectionException?{
A []?resultado?=?getSubjects(nombre,?valor);
if?(resultado.longitud?<=?0)
return?null;
else
return?resultado[0];
}
public?A[]?getSubjects(String?nombre,?Objeto?valor)
throws?IntrospectionException,?IllegalAccessException,
IllegalArgumentException,?InvocationTargetException?{
PropertyDescriptor?pd?=?new?PropertyDescriptor(nombre,?A.clase) ;
Método?getter?=?pd.getReadMethod();
Iterador?it?=?this.iterator();
A []?resultado?=?nuevo?A[0];
mientras?(it.hasNext())?{
A?obj?=?it.next() ;
¿Objeto?theValue?=?getter.invoke(obj);
if?(theValue?!=?null?&&?theValue.equals(value))?{
resultado?=?Arrays.copyOf(resultado,?result.length?+?1);
resultado[resultado.length?-?1]?=?obj; p> p>
}
}
return?resultado;
}
public?static?void?main(String[]?args)?throws?IllegalAccessException,
IllegalArgumentException,?InvocationTargetException,
IntrospectionException?{
AList?al?=?new?AList();
A?a?=? new?A("张三");
a.setAge(18);
a.setGender("Male");
a.setSchool ("Universidad XX");
A?b?=?new?A("李思");
b.setAge(20);
b.setGender("masculino");
b.setSchool("Universidad XX");
A?c?=?new?A("王五");
c.setAge(18);
c.setGender("Mujer");
c.setSchool("XX Universidad");
al.add(a);
al.add(b);
al.add(c);
System.out. println(Arrays.toString(al.getSubjects("nombre",?"Zhang San")));
System.out.println(Arrays.toString(al.getSubjects("edad",?18 )));
System.out.println(Arrays.toString(al.getSubjects("gender",?"male")));
System.out.println( Arrays.toString(al.getSubjects("escuela",?"XX Universidad")));
///?[A?[name=张三,?age=18,?gender=male] ]
///?[A?[nombre=张三,?edad=18,?género=hombre],?A?[nombre=王五,?edad=18,?género=mujer] ]
//?[A?[nombre=Zhang San,?edad=18,?género=hombre],?A?[nombre=李思,?edad=20,?género=hombre] ]
//?[A?[nombre=Zhang San,?edad=18,?género=hombre],?A?[nombre=李思,?edad=20,?género=hombre] ,?A?[nombre=王五,?edad=18,?género=mujer]]
}
}
clase?A?{
privado?Cadena?nombre;
privado?int?edad;
privado?Cadena?género;
privado?Cadena?escuela ;
public?String?getSchool()?{
return?school;
}
public?void?setSchool(String ?escuela)?{
esta.escuela?=?escuela;
<p> }
público?A(Cadena?nombre)?{
super();
este.nombre?=?nombre;
}
¿público?String?getGender()?{
return?gender;
}
¿público?void? setGender(String?gender)?{
this.gender?=?gender;
}
public?int?getAge()?{
return?age;
}
public?void?setAge(int?age)?{
this.age?=?age;
}
public?String?getName()?{
return?nombre;
}
public?void?setName(String?name)?{
this.name?=?name;
}
@Override
public?String?toString()?{
return?"A?[name="?+?name?+?",?age="?+?age?+?",?gender ="?+?género?+?"]";
}
}