Create an arrayList from two other arrayList and keep only value that are identical in both arrayList

I have two arrayList that can contain 0 or many int and I need to create a new arrayList from these two with values that are in both. In this case [4,23]

Example

arrayList1 [3 ,4 ,7,23,12]
arrayList2 [13,4,17,23,15]

In this example I need a new arrayList containing [4,23]

Is there an easy way to do it with .contains() or some similar method. Or should I loop through both list and check for equality and create the new list ?

Knowing that one or the other arrayList can be empty.

Thank you

Jon Skeet
people
quotationmark

This would be more efficient with sets, but even just with lists, it's simple to use retainAll:

// Start by copying arrayList1
List<Integer> result = new ArrayList<Integer>(arrayList1);
result.retainAll(arrayList2);

That's assuming you don't want to modify arrayList1. If you don't mind about that, you can skip the first step:

arrayList1.retainAll(arrayList2);

You should strongly consider using sets if that's what you're logically talking about though.

people

See more on this question at Stackoverflow