我有两个 ArrayLists
,如图所示 - pinklist
和 normallist
。我正在比较它们并从中找到唯一值和重复值,如下面的代码所示:
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);
}
}
我正在正确获取 duplicateValues
,但没有获取唯一值。
最佳答案
应该这样做:
List<String> pinklist = t2.getList();
List<String> normallist = t.getList();
ArrayList<String> duplicates = new ArrayList<String>(normallist);
duplicates.retainAll(pinklist);
ArrayList<String> uniques = new ArrayList<String>(normallist);
uniques.removeAll(pinklist);
解释:
每个
List
都可以将另一个列表作为构造函数参数,并复制它的值。retainAll(list2)
将删除所有在list2
中不存在的条目。removeAll(list2)
将删除所有确实存在于list2
中的条目。我们不想删除/保留原始列表,因为这会修改它,所以我们在构造函数中复制它们。
关于java - 比较两个 ArrayList 以获得唯一值和重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13718548/