Comparing Two ArrayLists to Get Unique and Duplicate Values

java

Solution

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.

Problem

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.

Original source