リスト A を Map<K, V> に置き換えることはできませんか?ここで、K は A にあるオブジェクトのクラス型 (文字列など) で、V は Integer や Long などの数値です。次に、同じ古い値を単純に 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 の各オブジェクトを 1 つずつチェックします。
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 に格納しているオブジェクトが同じ名前を共有している場合はまったく同じである必要があります)。