比较列表中2个不同对象属性的最有效方法

时间:2015-11-20 14:51:24

标签: java

我有2 ArrayLists个自定义对象。我正在制作一个嵌套循环来比较它们并找到匹配。

然而,有什么更好的吗?我读了一些关于原始类型retainAll的内容,但我找不到如何在这里应用它的方法。我也读过有关覆盖equals()的内容,也无法获得,因为这是两个不同的对象。

for (String email : emailsOfContactsWhoFitDynConFilter) {
            for (Contact contact : emailClicks.items) { 
                if (email.equals(contact.EmailAddress) && (contact.link).split("\\?")[0].equals(linkInDynamicContent.split("\\?")[0])) {
                    count++;
                    break;
                }
        }

1 个答案:

答案 0 :(得分:0)

我不会假装这是最有效的方式,但我会这样做:

Set<String> emails = new HashSet<>(emailsOfContactsWhoFitDynConFilter);
String token = linkInDynamicContent.split("\\?")[0];
int count = items.stream().parallel()
        .filter(contact -> emails.contains(contact.EmailAddress))
        .filter(contact -> contact.link.split("\\?")[0].equals(token))
        .count();