當前位置:編程學習大全網 - 行動軟體 - java根據對象屬性從對象列表中取出對象

java根據對象屬性從對象列表中取出對象

package?test;

import?java.beans.IntrospectionException;

import?java.beans.PropertyDescriptor;

import?java.lang.reflect.InvocationTargetException;

import?java.lang.reflect.Method;

import?java.util.ArrayList;

import?java.util.Arrays;

import?java.util.Iterator;

public?class?AList?extends?ArrayList<A>?{

/**

?*?

?*/

private?static?final?long?serialVersionUID?=?-5626405721508120479L;

public?A?getSubject(String?name,?Object?value)

throws?IllegalAccessException,?IllegalArgumentException,

InvocationTargetException,?IntrospectionException?{

A[]?result?=?getSubjects(name,?value);

if?(result.length?<=?0)

return?null;

else

return?result[0];

}

public?A[]?getSubjects(String?name,?Object?value)

throws?IntrospectionException,?IllegalAccessException,

IllegalArgumentException,?InvocationTargetException?{

PropertyDescriptor?pd?=?new?PropertyDescriptor(name,?A.class);

Method?getter?=?pd.getReadMethod();

Iterator<A>?it?=?this.iterator();

A[]?result?=?new?A[0];

while?(it.hasNext())?{

A?obj?=?it.next();

Object?theValue?=?getter.invoke(obj);

if?(theValue?!=?null?&&?theValue.equals(value))?{

result?=?Arrays.copyOf(result,?result.length?+?1);

result[result.length?-?1]?=?obj;

}

}

return?result;

}

public?static?void?main(String[]?args)?throws?IllegalAccessException,

IllegalArgumentException,?InvocationTargetException,

IntrospectionException?{

AList?al?=?new?AList();

A?a?=?new?A("張三");

a.setAge(18);

a.setGender("男");

a.setSchool("XX大學");

A?b?=?new?A("李四");

b.setAge(20);

b.setGender("男");

b.setSchool("XX大學");

A?c?=?new?A("王五");

c.setAge(18);

c.setGender("女");

c.setSchool("XX大學");

al.add(a);

al.add(b);

al.add(c);

System.out.println(Arrays.toString(al.getSubjects("name",?"張三")));

System.out.println(Arrays.toString(al.getSubjects("age",?18)));

System.out.println(Arrays.toString(al.getSubjects("gender",?"男")));

System.out.println(Arrays.toString(al.getSubjects("school",?"XX大學")));

//?[A?[name=張三,?age=18,?gender=男]]

//?[A?[name=張三,?age=18,?gender=男],?A?[name=王五,?age=18,?gender=女]]

//?[A?[name=張三,?age=18,?gender=男],?A?[name=李四,?age=20,?gender=男]]

//?[A?[name=張三,?age=18,?gender=男],?A?[name=李四,?age=20,?gender=男],?A?[name=王五,?age=18,?gender=女]]

}

}

class?A?{

private?String?name;

private?int?age;

private?String?gender;

private?String?school;

public?String?getSchool()?{

return?school;

}

public?void?setSchool(String?school)?{

this.school?=?school;

}

public?A(String?name)?{

super();

this.name?=?name;

}

public?String?getGender()?{

return?gender;

}

public?void?setGender(String?gender)?{

this.gender?=?gender;

}

public?int?getAge()?{

return?age;

}

public?void?setAge(int?age)?{

this.age?=?age;

}

public?String?getName()?{

return?name;

}

public?void?setName(String?name)?{

this.name?=?name;

}

@Override

public?String?toString()?{

return?"A?[name="?+?name?+?",?age="?+?age?+?",?gender="?+?gender?+?"]";

}

}

  • 上一篇:PS怎麽p天空 妳學會了嗎
  • 下一篇:酸甜苦辣的近反義詞是什麽?
  • copyright 2024編程學習大全網