JavaBeans比较 [英] JavaBeans Comparison

查看:170
本文介绍了JavaBeans比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人知道一个免费的开源库(实用程序类),它允许你比较一个Java bean的两个实例,并返回一个属性的列表/数组,这些值在这两个实例中是不同的?

解决方案



干杯

Tomas

div>

ApacheComponator 是您正在寻找的。

更新。一个简单的例子,比较JavaBeans和一个属性(比较只是一个属性,你应该创建尽可能多的BeanComparators作为属性你想匹配)。

  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 [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 {
if(bc.compare(tbs [i],tbs [0])== 0)
{
System.out.println(Match found in bean+ i);
}
}
}
}

一些测试一个结果是成功的。这是输出:

  TestBean [0] = 0 
TestBean [1] = 4
TestBean [2] = 0
TestBean [3] = 2
TestBean [4] = 7
TestBean [5] = 3
TestBean [ [7] = 3
TestBean [8] = 7
TestBean [9] = 3

匹配值:0
在bean中找到匹配2
在bean中找到的匹配6

显然增加TestBean数组大小将增加匹配的机会。 p>

您需要将以下jars文件导入到您的项目:commons-logging- version .jar,commons-beanutils- > .jar,commons-beanutils-core- version .jar,commons-beanutils-bean-collections- version .jar,commons-collections- em> .jar。



这些文件包含在 commons-logging commons-beanutils commons-collections API。


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比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆