您能不能用 Map<K, V> 替换列表 A,其中 K 是您在 A 中拥有的对象的类类型(如字符串),而 V 是整数或长整数等数字。然后,不是简单地将相同的旧值添加到 A 中(当您首先构造列表时),您可以这样做,例如:
Map<String, Integer> countMap = new HashMap<String, Integer>();
Integer currentCount = countMap.get("Red");
countMap.put("Red", (currentCount == null ? 1 : currentCount.intValue() + 1));
然后要获取列表 B 中找到的每个对象的计数,您只需遍历地图,依次检查 B 中的每个对象:
List<String> listB = new List<String>();
listB.add("Red");
listB.add("Brown");
listB.add("Green");
for(String s : listB) {
Integer quantityFoundInA = countMap.get(s);
System.out.println("String <"+s"> found in list (map) 'A' "+(quantityFoundInA == null ? 0 : quantityFoundInA.intValue())+" times");
}
我猜测这种结构比简单地将相同对象的多个副本存储在 List 中更有效(只要您存储在 A 中的对象在它们共享相同名称时完全相同)。