Finding common Integers between two lists
I personally would shorten this greatly:

public static int numInCommon(List&lt;Integer&gt; list1, List&lt;Integer&gt; list2){
    if(list1.isEmpty() || list2.isEmpty()){
        return 0;
    }

    Set&lt;Integer&gt; setCommon = new HashSet&lt;&gt;(list1);
    setCommon.retainAll(list2);
    return setCommon.size();
}


Returning 0 at the start is good, but no need for the else block on the If code. 
Next task is to calculate the common elements - putting list1 into the set removes duplicates and then retainAll removes anything that isn't in list2. This leaves everythin in list1 and list2 without duplicates. Returning the size() counts the elements.

For performance - I'm taking the major assumption that HashSet is one of the quickest ways to check if an item exists and handle removal.