JavaBeans Comparison(JavaBeans 比较)
问题描述
Does anyone know about a free open source library (utility class) which allows you to compare two instances of one Java bean and return a list/array of properties which values are different in those two instances? Please post a small sample.
Cheers
Tomas
BeanComparator of Apache commons is what you are looking for.
Update. A simple example that compares JavaBeans with one property (comparation is made agains only one property, you should create as many BeanComparators as properties you want to match).
import org.apache.commons.beanutils.BeanComparator;
public class TestBeanComparator
{
public TestBeanComparator()
{
}
public class TestBean
{
int value;
public TestBean()
{
}
public int getValue()
{
return value;
}
public void setValue(int value)
{
this.value = value;
}
}
public static void main(String[] args)
{
TestBeanComparator tbc = new TestBeanComparator();
tbc.go();
}
public void go()
{
TestBean tbs [] = new TestBean[10];
for (int i = 0; i < tbs.length; i++)
{
tbs[i] = new TestBeanComparator.TestBean();
tbs[i].setValue((int) (Math.random() * 10));
System.out.println("TestBean["+i+"] = " + tbs[i].getValue());
}
BeanComparator bc = new BeanComparator("value");
System.out.println("");
System.out.println("Value to match: " + tbs[0].getValue());
for (int i = 1; i < tbs.length; i++)
{
if(bc.compare(tbs[i], tbs[0]) == 0)
{
System.out.println("Match found in bean "+ i);
}
}
}
}
After some tests one result is successful. This is the output:
TestBean[0] = 0
TestBean[1] = 4
TestBean[2] = 0
TestBean[3] = 2
TestBean[4] = 7
TestBean[5] = 3
TestBean[6] = 0
TestBean[7] = 3
TestBean[8] = 7
TestBean[9] = 3
Value to match: 0
Match found in bean 2
Match found in bean 6
Obviously increasing TestBean array size will increase the chances to get matches.
You need to import to your project the following jars: commons-logging-version.jar, commons-beanutils-version.jar, commons-beanutils-core-version.jar, commons-beanutils-bean-collections-version.jar, commons-collections-version.jar.
The files are included inside commons-logging, commons-beanutils and commons-collections APIs.
这篇关于JavaBeans 比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:JavaBeans 比较
基础教程推荐
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01