Вам нужна сумка, например сумка в коллекциях Apache Commons или Multiset в коллекциях Google. Вы можете добавить одно и то же значение к нему несколько раз, и он будет записывать количество каждого значения. Затем вы можете опросить счет.
Вы бы сделали что-то подобное с Apache Commons ' Bag :
Bag myBag = new HashBag();
myBag.add("Orange");
myBag.add("Apple", 4);
myBag.add("Apple");
myBag.remove("Apple", 2);
int apples = myBag.getCount("Apple"); // Should be 3.
int kumquats = myBag.getCount("Kumquat"); // Should be 0.
И это с помощью Google Collections ' Multiset .
Multiset<String> myMultiset= HashMultiset.create();
myMultiset.add("Orange");
myMultiset.add("Apple", 4);
myMultiset.add("Apple");
myMultiset.remove("Apple", 2);
int apples = myMultiset.count("Apple"); // 3
int kumquats = myMultiset.count("Kumquats"); // 0
Проблема с Apache Collections в целом заключается в том, что он не очень активно поддерживается и еще не поддерживает Generics Java. Чтобы выйти из этого пробела, Google написал свои Коллекции , которые являются чрезвычайно мощными. Обязательно сначала оцените Коллекции Google.
Обновление: Google Collections также предлагает Multimap, «коллекцию, похожую на карту, но которая может связывать несколько значений с одним ключом».