/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
{
Ideone ideone = new Ideone();
ideone.mainlogic();
}
public void mainlogic() {
InstrumentedHashSet<String> s = new InstrumentedHashSet<String>();
s.
addAll(Arrays.
asList("A",
"I",
"P")); System.
out.
println(s.
getAddCount()); }
class InstrumentedHashSet<E> extends HashSet<E> {
private int addCount = 0;
public InstrumentedHashSet(){
}
public InstrumentedHashSet(int initCap, float loadFactor) {
super(initCap, loadFactor);
}
@Override public boolean add(E e) {
addCount++;
return super.add(e);
}
@Override public boolean addAll(Collection<? extends E> c){
boolean result = false;
for(E e : c) {
if (this.add(e)) result = true;
}
return result;
}
public int getAddCount() {
return addCount;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJSWRlb25lIGlkZW9uZSA9IG5ldyBJZGVvbmUoKTsKCQlpZGVvbmUubWFpbmxvZ2ljKCk7Cgl9CglwdWJsaWMgdm9pZCBtYWlubG9naWMoKSB7CgkJSW5zdHJ1bWVudGVkSGFzaFNldDxTdHJpbmc+IHMgPSBuZXcgSW5zdHJ1bWVudGVkSGFzaFNldDxTdHJpbmc+KCk7CgkJcy5hZGRBbGwoQXJyYXlzLmFzTGlzdCgiQSIsICJJIiwgIlAiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKHMuZ2V0QWRkQ291bnQoKSk7Cgl9CgljbGFzcyBJbnN0cnVtZW50ZWRIYXNoU2V0PEU+IGV4dGVuZHMgSGFzaFNldDxFPiB7CgkJcHJpdmF0ZSBpbnQgYWRkQ291bnQgPSAwOwoJCXB1YmxpYyBJbnN0cnVtZW50ZWRIYXNoU2V0KCl7CgkJfQoJCXB1YmxpYyBJbnN0cnVtZW50ZWRIYXNoU2V0KGludCBpbml0Q2FwLCBmbG9hdCBsb2FkRmFjdG9yKSB7CgkJCXN1cGVyKGluaXRDYXAsIGxvYWRGYWN0b3IpOwoJCX0KCQlAT3ZlcnJpZGUgcHVibGljIGJvb2xlYW4gYWRkKEUgZSkgewoJCQlhZGRDb3VudCsrOwoJCQlyZXR1cm4gc3VwZXIuYWRkKGUpOwoJCX0KCQlAT3ZlcnJpZGUgcHVibGljIGJvb2xlYW4gYWRkQWxsKENvbGxlY3Rpb248PyBleHRlbmRzIEU+IGMpewoJCQlib29sZWFuIHJlc3VsdCA9IGZhbHNlOwoJCQlmb3IoRSBlIDogYykgewoJCQkJaWYgKHRoaXMuYWRkKGUpKSByZXN1bHQgPSB0cnVlOwoJCQl9CgkJCXJldHVybiByZXN1bHQ7CgkJfQoJCXB1YmxpYyBpbnQgZ2V0QWRkQ291bnQoKSB7CgkJCXJldHVybiBhZGRDb3VudDsKCQl9Cgl9Cn0=