微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaBeans比较

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

干杯
托马斯

解决方法

Apache Commons的 BeanComparator是你正在寻找的.

更新.将JavaBeans与一个属性进行比较的简单示例(比较只会产生一个属性,您应该创建与要匹配的属性一样多的BeanComparator).

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); 
            }
        }
    }
}

经过一些测试,一个结果是成功的.这是输出

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

显然,增加TestBean数组大小将增加获取匹配的机会.

您需要将以下jar导入到项目中:commons-logging-version.jar,commons-beanutils-version.jar,commons-beanutils-core-version.jar,commons-beanutils-bean-collections-version.jar,commons -collections-version.jar.

这些文件包含在commons-logging,commons-beanutilscommons-collections API中.

原文地址:https://www.jb51.cc/java/126875.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐