/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.Collectors;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static final class Inner {
public Inner
(String id,
int type
) { setId(id); setType(type);
}
void setId
(String id
) { this.
id=id
; } int type;
int getType() { return type; }
void setType(int type) { this.type = type; }
}
ArrayList<Inner> list = new ArrayList<>();
list.add(new Inner("1", 2));
list.add(new Inner("2", 3));
list.add(new Inner("3", 3));
list.add(new Inner("4", 3));
list.add(new Inner("5", 2));
list.add(new Inner("6", 1));
// 1 item of type 1, 2 of type 2 and 3 of type 3, so the expected result is {1=1, 2=2, 3=3}
System.
out.
println(list.
stream().
collect( Collectors.groupingBy(Inner::getType, Collectors.counting())
));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCQoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgSW5uZXIgewoJCQoJCXB1YmxpYyBJbm5lcihTdHJpbmcgaWQsIGludCB0eXBlKSB7CgkJCXNldElkKGlkKTsgc2V0VHlwZSh0eXBlKTsKCQl9CgkJCgkJU3RyaW5nIGlkOwoJCVN0cmluZyBnZXRJZCgpIHsgcmV0dXJuIGlkO30KCQl2b2lkIHNldElkKFN0cmluZyBpZCkgeyB0aGlzLmlkPWlkOyB9CgkJaW50IHR5cGU7CgkJaW50IGdldFR5cGUoKSB7IHJldHVybiB0eXBlOyB9CgkJdm9pZCBzZXRUeXBlKGludCB0eXBlKSB7IHRoaXMudHlwZSA9IHR5cGU7IH0KCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIHsKCQlBcnJheUxpc3Q8SW5uZXI+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQlsaXN0LmFkZChuZXcgSW5uZXIoIjEiLCAyKSk7CgkJbGlzdC5hZGQobmV3IElubmVyKCIyIiwgMykpOwoJCWxpc3QuYWRkKG5ldyBJbm5lcigiMyIsIDMpKTsKCQlsaXN0LmFkZChuZXcgSW5uZXIoIjQiLCAzKSk7CgkJbGlzdC5hZGQobmV3IElubmVyKCI1IiwgMikpOwoJCWxpc3QuYWRkKG5ldyBJbm5lcigiNiIsIDEpKTsKCQkvLyAxIGl0ZW0gb2YgdHlwZSAxLCAyIG9mIHR5cGUgMiBhbmQgMyBvZiB0eXBlIDMsIHNvIHRoZSBleHBlY3RlZCByZXN1bHQgaXMgezE9MSwgMj0yLCAzPTN9CgkJU3lzdGVtLm91dC5wcmludGxuKGxpc3Quc3RyZWFtKCkuY29sbGVjdCgKCQkJQ29sbGVjdG9ycy5ncm91cGluZ0J5KElubmVyOjpnZXRUeXBlLCBDb2xsZWN0b3JzLmNvdW50aW5nKCkpCgkJKSk7Cgl9Cn0=