java11从list中取出某个属性_java根据对象属性从对象列表中取出对象

展开全部

5b81a8a0ea9029034c6528da2083e56a.pngpackage 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 {

/**

*

*/

private static final long serialVersionUID = -5626405721508120479L;

public A getSubject(String name, Object value)

32313133353236313431303231363533e78988e69d8331333365653863throws 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 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 + "]";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值