1

我有以下代码,我需要做的是将实例(类型对象)添加到项目对象列表(在最后一个 if 中完成),但我需要找到完整的键匹配。fromProp 和 toProp 在此实例中是字段类型对象(键可以是 username 、 customer 、number、f1 等)。现在代码正在处理第一个匹配字段(在最后一个 if 语句中),如果找到第一个匹配项,我们将数据添加到项目列表中,但我想找到完整的键匹配,即如果我有 3 个键,那么当它们完全匹配,而不是将“toEntityInstance”添加到项目对象。我该怎么做?

for (Object fromEntityInstance : fromEntityInstances) {

            List<Object> itemObject = new ArrayList<Object>();

            for (String[] prop : depPropMappings) {

                // Get properties related keys
                fromProp = prop[0];
                toProp = prop[1];

                Object fromValue = getInstanceValue(fromProp, fromEntityInstance);

                for (Object toEntityInstance : toEntityInstances) {

                    Object toValue = getInstanceValue(toProp, toEntityInstance);

                    if (fromValue.equals(toValue)) {

                    itemObject.add(toEntityInstance);

                    }

                }
            }

例如实体可以 来自EntityInstance

f1=Mark
f2=abc
f3=test1
f4=test1
f5=test1

toEntityInstance

f1=Mark
f2=abc
f3=test1
f4=test1
f5=test1

f1=Mark
f2=abc
f3=test1
f4=test1
f5=test1

f1=jhon
f2=yyyy
f3=test1
f4=test1
f5=test1

在 depPropMappings 我有两个键实例

第一个例子

  fromProp = f1;
  toProp = f1;

第二审

 fromProp = f2;
 toProp = f2;

所以我只需将 toEntityInstance 中的两个第一个实体(其中 f1=mark 和 f2=abc )添加到 itemObject 。目前,如果我们找到 f1 之间的匹配但忽略 F2,则代码可以工作...

我想在开始时计算密钥的数量,如果密钥的数量是 indentica l 更新列表但不知道该怎么做

4

1 回答 1

1

您的循环嵌套顺序错误。如果两者都匹配,您当前的代码将toEntityInstance两次添加到列表中。depPropMappings尝试这样的事情:

for (Object fromEntityInstance : fromEntityInstances) {

    List<Object> itemObject = new ArrayList<Object>();

    for (Object toEntityInstance : toEntityInstances) {
        boolean matches = true;

        for (String[] prop : depPropMappings) {

            // Get properties related keys
            fromProp = prop[0];
            toProp = prop[1];

            Object fromValue = getInstanceValue(fromProp, fromEntityInstance);
            Object toValue = getInstanceValue(toProp, toEntityInstance);

            // Note: Make sure that fromValue cannot be null. If this cannot be
            // guaranteed, add a check here.
            if (!fromValue.equals(toValue)) {
                // if any value mismatches, we can stop checking the remaining
                // properties.
                matches = false;
                break;
            }
        }

        if (matches) {
            // all properties match
            itemObject.add(toEntityInstance);
        }
    }
}
于 2013-04-05T06:08:36.403 回答