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
finalvalin your conditions, instead asking whether one list contains the other list.You could do it like this:
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. TheSetsclass in Guava provides useful methods for working with sets.