/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
/**
* Class representing key in HashMap should be immutable.
*/
private final static class MyObject {
private final String fieldString
; private final int fieldInt;
public MyObject
(final String fieldString,
final int fieldInt
) { this.fieldString = fieldString;
this.fieldInt = fieldInt;
}
@Override
public boolean equals
(final Object o
) { if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
final MyObject myObject = (MyObject) o;
return Objects.equals(fieldInt, myObject.fieldInt) &&
Objects.equals(fieldString, myObject.fieldString);
}
@Override
public int hashCode() {
return Objects.hash(fieldString, fieldInt);
}
}
HashMap<MyObject, Object> map = new HashMap<>();
map.
put(new MyObject
("a",
1),
new Object()); map.
put(new MyObject
("b",
1),
new Object()); map.
put(new MyObject
("a",
2),
new Object()); map.
put(new MyObject
("b",
2),
new Object()); map.
put(new MyObject
("a",
1),
new Object());
if (map.size() == 4) {
System.
out.
println("Correct number of elements in map"); } else {
System.
out.
println("Incorrect number of elements in map"); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCS8qKgogICAgICogQ2xhc3MgcmVwcmVzZW50aW5nIGtleSBpbiBIYXNoTWFwIHNob3VsZCBiZSBpbW11dGFibGUuCiAgICAgKi8KICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGNsYXNzIE15T2JqZWN0IHsKICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBmaWVsZFN0cmluZzsKICAgICAgICBwcml2YXRlIGZpbmFsIGludCBmaWVsZEludDsKICAgICAgICAKICAgICAgICBwdWJsaWMgTXlPYmplY3QoZmluYWwgU3RyaW5nIGZpZWxkU3RyaW5nLCBmaW5hbCBpbnQgZmllbGRJbnQpIHsKICAgICAgICAgICAgdGhpcy5maWVsZFN0cmluZyA9IGZpZWxkU3RyaW5nOwogICAgICAgICAgICB0aGlzLmZpZWxkSW50ID0gZmllbGRJbnQ7CiAgICAgICAgfQoKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKICAgICAgICAgICAgaWYgKHRoaXMgPT0gbykKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICBpZiAobyA9PSBudWxsIHx8IGdldENsYXNzKCkgIT0gby5nZXRDbGFzcygpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgZmluYWwgTXlPYmplY3QgbXlPYmplY3QgPSAoTXlPYmplY3QpIG87CgogICAgICAgICAgICByZXR1cm4gT2JqZWN0cy5lcXVhbHMoZmllbGRJbnQsIG15T2JqZWN0LmZpZWxkSW50KSAmJgogICAgICAgICAgICAgICAgT2JqZWN0cy5lcXVhbHMoZmllbGRTdHJpbmcsIG15T2JqZWN0LmZpZWxkU3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3RzLmhhc2goZmllbGRTdHJpbmcsIGZpZWxkSW50KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgSGFzaE1hcDxNeU9iamVjdCwgT2JqZWN0PiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CgogICAgICAgIG1hcC5wdXQobmV3IE15T2JqZWN0KCJhIiwgMSksIG5ldyBPYmplY3QoKSk7CiAgICAgICAgbWFwLnB1dChuZXcgTXlPYmplY3QoImIiLCAxKSwgbmV3IE9iamVjdCgpKTsKICAgICAgICBtYXAucHV0KG5ldyBNeU9iamVjdCgiYSIsIDIpLCBuZXcgT2JqZWN0KCkpOwogICAgICAgIG1hcC5wdXQobmV3IE15T2JqZWN0KCJiIiwgMiksIG5ldyBPYmplY3QoKSk7CiAgICAgICAgbWFwLnB1dChuZXcgTXlPYmplY3QoImEiLCAxKSwgbmV3IE9iamVjdCgpKTsKCiAgICAgICAgaWYgKG1hcC5zaXplKCkgPT0gNCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvcnJlY3QgbnVtYmVyIG9mIGVsZW1lbnRzIGluIG1hcCIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5jb3JyZWN0IG51bWJlciBvZiBlbGVtZW50cyBpbiBtYXAiKTsKICAgICAgICB9CiAgICB9Cn0=