Вы можете использовать Multiset из рамок Guava, который открыт Google.
Использование Multiset может значительно упростить вашу жизнь.
Multiset<String> set = HashMultiset.create();
set.add("abc"):
set.add("acd");
set.add("abc");
// use set.count(Object) to get the counter of the object
int c = set.count("abc");
// or iterate through the set to get each object and its count
for (Multiset.Entry<String> entry : set.entrySet()){
String str = entry.getElement();
int count = entry.getCount();
}
По сравнению с традиционным способом, который использует обычные HashMaps:
Map<String, Integer> map = new HashMap<String, Integer>();
public void add(String str){
Integer oldValue = map.get(str);
if (oldValue == null){
map.put(str, 1);
} else{
map.put(str, oldValue + 1);
}
}
Даже если вы используете изменяемые счетчики как значения HashMap, код по-прежнему очень громоздкий.
Map<String, AtomicInteger> map = new HashMap<String, AtomicInteger>();
public void add(String str){
AtomicInteger counter = map.get(str);
if (counter == null){
counter = new AtomicInteger();
map.put(str, counter);
}
counter.incrementAndGet();
}
с использованием 'для loop' это не вариант? –
@Mahan Я просто хочу знать, будет ли значение 1 добавлено к 2 автоматически ... это просто простой пример – Justin
Это не хороший дизайн api. Вы всегда можете увеличить и поместить в карту. – Jayan