Вы можете создать класс, который содержит счетчики и карту, которая содержит значения и их счет. Вот код «на лету», настройте его при необходимости:
class TypeCounter {
private final AtomicInteger cnt = new AtomicInteger();
private final String name;
TypeCounter(String name) {
this.name = name;
}
public void inc() {
cnt.incrementAndGet();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("TypeCounter [result=");
builder.append(cnt.get());
builder.append(", ");
if (name != null) {
builder.append("name=");
builder.append(name);
}
builder.append("]");
return builder.toString();
}
}
public Console() {
String names = "aa,aa,bb,aa,cc,ee,ee,ee";
List<String> nameList = Arrays.asList(names.split(","));
final Map<String, TypeCounter> test = new HashMap<>();
nameList.forEach(item -> {
TypeCounter cnt = test.get(item);
if (Objects.isNull(cnt)) {
TypeCounter tc = new TypeCounter(item);
tc.inc();
test.put(item, tc);
} else {
cnt.inc();
}
});
System.out.println(test);
}
public static void main(String[] args) throws Exception {
new Console();
}