0

我正在尝试ArrayList从现有内容中获取新内容ArrayList并更新新列表中的字段。但它也在旧列表中得到更新。

我尝试了以下代码:

absoluteEntitlements = findAbsoluteEntitlements(ImmutableList.copyOf(tenantEntitlements), everyoneEntitlements, "global");

private List<Entitlement> findAbsoluteEntitlements(ImmutableList<Entitlement> primaryEntitlements,
            List<Entitlement> secondaryEntitlements, String accessType) {
        List<Entitlement> absoluteEntitlements = new ArrayList<Entitlement>(primaryEntitlements);
    for (int i = 0; i < primaryEntitlements.size(); i++) {
        for (int j = 0; j < secondaryEntitlements.size(); j++) {
            if (secondaryEntitlements.get(j).equals(primaryEntitlements.get(i))
                    && "false".equals(primaryEntitlements.get(i).getAccessType())) {
                absoluteEntitlements.get(i).setAccessType(accessType);
            }
        }
    }
    return absoluteEntitlements;
}

请提供一个解决方案,我做错了。

4

1 回答 1

0

如果要复制自定义对象的列表,那么在将对象添加到新列表之前,您必须克隆对象。

List<Entitlement> absoluteEntitlements = new ArrayList<Entitlement>();
for (Entitlement e : primaryEntitlements) {
    absoluteEntitlements.add(e.clone());
}

确保您的权利类应该支持对象的克隆。

于 2016-03-23T09:18:07.030 回答