请教各位大牛一个问题?有一个list集合中包含很多的A对象,A对象有5个字段,且每个对象的字段有值。现在有一个B对象,B对象也有和A一样的字段,只是有部分字段没有值,如何判断list集合包含B这样的对象。例如 List<Object> list = new ArrayList <Object> ();
A a1 =new A ();
A a2 =new A ();
A a3 =new A ();
list.add(a1);
list.add(a2);
list.add(a3);
B b1 = new B();
java技术
A a1 =new A ();
A a2 =new A ();
A a3 =new A ();
list.add(a1);
list.add(a2);
list.add(a3);
B b1 = new B();
java技术
解决方案 »
- 关于J2EE就业前景
- oracle中的中文字符在jsp页面的乱码问题?
- 项目报表的实现
- TOMCAT5.5能正常运行,换到TOMCAT6.0就报错,怎么回事?
- 我使用JAXP来创建编写自己的xml文件有效性校验器,结果就报错,怎么办啊
- 做一个站内的搜索引擎,需要哪些准备技术?
- 请问一下什么我加的Hibernate包不能使用MyEclipse工具生成实体类和映射文件?
- 如何将ANSI编码的文件自动转换为UTF-8
- struts问题
- 是不是一个函数里面 只要有了return 就不在执行函数下面的语句了 哪怕return在函数的if 语句内部
- hibernate 注解如何绑定自定义oracle sequence
- JOTM配置分布式事务部起作用
如果不是一个类那就更好办了,使用instanceof来判断类型
if(list.get(i) instanceof B){
....
}
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class ListHava {
public static void main(String[] args) {
List<Object> list = new ArrayList<Object>();
A a1 = new A();
A a2 = new A();
A a3 = new A();
list.add(a1);
list.add(a2);
list.add(a3);
B b1 = new B();
list.add(b1);
System.out.println(listHaveEqual(list, a1, b1));
} public static boolean listHaveEqual(List<Object> l, Object p, Object q) {
if((l.contains(p)&&l.contains(q))==false){
return false;
}
Class pclass = p.getClass();
Class qclass = q.getClass();
Field[] f1 = pclass.getDeclaredFields();
Field[] f2 = qclass.getDeclaredFields();
for(int i=0;i<f1.length;i++){
f1[i].setAccessible(true);
}
for(int i=0;i<f2.length;i++){
f2[i].setAccessible(true);
}
for (Field f : f1) {
System.out.println(f);
String n = f.getName();
Class t = f.getType();
Boolean equal = false;
for (Field ff : f2) {
if (ff.getName().equals(n) && ff.getType().equals(t)) {
equal = true;
break;
} }
if (equal == false) {
return false;
}
}
return true; }
}class A {
int i = 1;
int t = 3;
boolean q = false;
}class B {
int i = 2;
int t = 4;
boolean q = true;
String r = "dsfa";}