Java - 如何在另一个列表的列表中查找项目数

Dav*_*ley 4 java list count java-6

说我有两个清单:

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"); 
Run Code Online (Sandbox Code Playgroud)

我需要找到产品列表中存在的购物车清单中有多少商品.对于上面的列表,答案是1(因为电话在产品和购物车中).如果购物车清单是:

List<String>cart = new ArrayList<String>(); 
cart.add("desk"); 
cart.add("chair"); 
Run Code Online (Sandbox Code Playgroud)

结果将是0.如果购物车包含计算机,鼠标,桌子,椅子,结果将是2(对于计算机和鼠标).

有什么东西在Apache的百科全书集合谷歌集合API?我仔细查看过它们,看看如何计算行李数,但不是从另一个列表,尽管我可能会遗漏一些东西.现在,我能想到的唯一方法是迭代购物车商品,看看产品是否包含单个商品并保持计数.我不能使用containsAll,因为我需要count(不是布尔值),如果购物车中的所有商品都不存在于产品列表中(这可能会发生),那么这将失败.

如果重要的话,我正在使用Java 1.6.

Chr*_*Gow 11

如果您愿意创建另一个集合,则可以执行以下操作:

List<String> productsInCart = new ArrayList<String>(products);
productsInCart.retainAll(cart);
Run Code Online (Sandbox Code Playgroud)

这将为您提供购物车和产品中出现的所有条目.


ang*_*ger 10

int count = 0;
for (String item : cart) {
   if (products.contains(item))
    count++;
   }
}
Run Code Online (Sandbox Code Playgroud)