gpt4 book ai didi

JavaBeans 比较

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:59 28 4
gpt4 key购买 nike

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

干杯
托马斯

最佳答案

BeanComparator Apache commons 正是您要找的。

更新。一个将 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.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。

关于JavaBeans 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/437093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com