Java - How to find count of items in a list in another list
- by David Buckley
Say I have two lists:
List<String>products = new ArrayList<String>();
products.add("computer");
products.add("phone");
products.add("mouse");
products.add("keyboard");
List<String>cart = new ArrayList<String>();
cart.add("phone");
cart.add("monitor");
I need to find how many items in the cart list exist in the products list. For the lists above, the answer would be 1 (as phone is in products and cart). If the cart list was:
List<String>cart = new ArrayList<String>();
cart.add("desk");
cart.add("chair");
The result would be 0. If cart contained computer, mouse, desk, chair, the result would be 2 (for computer and mouse).
Is there something in the Apache Commons Collections or the Google Collections API? I've looked through them and see ways to get a bag count, but not from another list, although it's possible I'm missing something. Right now, the only way I can think of is to iterate over the cart items and see if products contains the individual item and keep a count. I can't use containsAll as I need the count (not a boolean), and that would fail if all items in cart didn't exist in the product list (which can happen).
I'm using Java 1.6 if that matters.