比较两个ArrayList以获取唯一值和重复值 [英] Comparing Two ArrayLists to Get Unique and Duplicate Values

查看:50
本文介绍了比较两个ArrayList以获取唯一值和重复值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个 ArrayLists ,如图所示- pinklist normallist .我正在对它们进行比较,并从两者中找到唯一和重复的值,如下代码所示:

  List< String>pinklist = t2.getList();List< String>normallist = t.getList();ArrayList< String>重复值=新的ArrayList< String>();ArrayList< String>uniquevalues = new ArrayList< String>();对于(String finalval:pinklist){如果(pinklist.contains(normallist)){plicatevalues.add(finalval);} else if(!normallist.contains(pinklist)){uniquevalues.add(finalval);}} 

我正确地获得了 duplicateValues ,但是我没有获得唯一值.

解决方案

您正在忽略条件中的 finalval ,而是询问一个 list 是否包含另一个>列表.

您可以这样做:

 //编辑变量名称以提高可读性对于(String item:pinkList){如果(normalList.contains(item)){plicateList.add(item);} 别的 {uniqueList.add(item);}} 

尽管如此,我不会真正称这些独特"或重复"的物品-这些物品通常与一个收藏夹中的物品有关.这只是测试一个列表中的每个项目是否在另一个列表中.我想说,在这种情况下,它更像是现有"和新".

请注意,当您以基于集合的方式处理这些内容时,建议您使用诸如 HashSet< E> 之类的集合实现而不是列表. Guava 中的集合 类提供了处理集合的有用方法.>

I have two ArrayLists as shown - pinklist and normallist. I am comparing both of them and finding the unique and duplicate values from both as shown below in code:

List<String> pinklist = t2.getList();
List<String> normallist = t.getList();
ArrayList<String> duplicatevalues = new ArrayList<String>();
ArrayList<String> uniquevalues = new ArrayList<String>();

for (String finalval : pinklist) {
    if (pinklist.contains(normallist)) {
        duplicatevalues.add(finalval);
    } else if (!normallist.contains(pinklist)) {
        uniquevalues.add(finalval);
    }
}

I am getting the duplicateValues properly, but I am not getting the unique values.

解决方案

You're ignoring finalval in your conditions, instead asking whether one list contains the other list.

You could do it like this:

// Variable names edited for readability
for (String item : pinkList) {
    if (normalList.contains(item)) {
        duplicateList.add(item);
    } else {
        uniqueList.add(item);
    }
}

I wouldn't really call these "unique" or "duplicate" items though - those are usually about items within one collection. This is just testing whether each item from one list is in another. It's more like "existing" and "new" in this case, I'd say.

Note that as you're treating these in a set-based way, I'd suggest using a set implementation such as HashSet<E> instead of lists. The Sets class in Guava provides useful methods for working with sets.

这篇关于比较两个ArrayList以获取唯一值和重复值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆