Determine if 2 lists with similar objects contain a partial duplicate
There are certain reasons I would not prefer your approach. These are:

1) There are multiple method calls which reduces the readability.

2) You are using filter twice which decreases the performances. You could do it inside the same filter like I've shown below

3) With this approach you don't have a consolidated List which contains common elements. For that you need another else condition which increases the cyclomatic complexity.

4) A null check which could produce NPE if not handled carefully as you are using findFirst() which returns Optional (Although null can be replaced with default new Person("","") object which is again not recommended).

5) Finally don't use ArrayList&lt;Person&gt; originalPeople = new ArrayList&lt;&gt;();; rather declare as List, to follow programming to interface.

Rather I would use below approach:

private static List&lt;Person&gt; getPersonInList(
            final List&lt;Person&gt; newPeople, List&lt;Person&gt; originalPeople) {
        List&lt;Person&gt; list = new ArrayList&lt;&gt;();

        newPeople.forEach(p -&gt;
                originalPeople.stream()
                              .filter(p1 -&gt; p.getFirstName().equals(p1.getFirstName()) &amp;&amp; 
                                      p.getLastName().equals(p1.getLastName()))
                              .forEach(list::add));
        return list;
    }