Следующий метод должен считать вхождений каждого элемента в заданном наборе:Граф вхождения строки в строку [] с помощью Map <String, AtomicInteger>
void groupBy(String[] stuff) {
LinkedHashMap<String, AtomicInteger> A = new LinkedHashMap<String, AtomicInteger>();
final AtomicInteger one = new AtomicInteger(1);
AtomicInteger count;
for (String key:stuff) {
count = A.get(key);
if (count==null) A.put(key, one);
else System.out.println("Previous value :"+A.put(key, new AtomicInteger(count.incrementAndGet())));
}
Set set = A.entrySet();
Iterator ii = set.iterator();
while(ii.hasNext()) {
Map.Entry me = (Map.Entry)ii.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}
Итак, если я бегу он по парам
String a[] = {"AAA", "A", "AA", "B", "A", "AAA"};
я должен получить
Previous value :1
Previous value :1
AAA: 2
A: 2
AA: 1
B: 1
Но то, что я получаю
Previous value :2
Previous value :3
AAA: 3
A: 2
AA: 3
B: 3
значения в хеше обновляются за пределы того, что я намереваюсь делать, и у меня нет идеи, как это сделать.
помочь оценить.
Любая конкретная причина, по которой вы использовали 'AtomicInteger'? Вы сделали простую программу очень сложной проблемой. – Prateek
почему 'AtomicInteger'? – Trying
@Prateek - Да. сделать приращение компактным. – user2985116