import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
* @author Obicere
*/
public class Main {
public static void main
(final String[] args
) {
final Set<PlacesInfo> placeId = new HashSet<>();
placeId.add(new PlacesInfo("Foo"));
placeId.add(new PlacesInfo("Bar"));
placeId.add(new PlacesInfo("Foo"));
}
private static class PlacesInfo {
// Assuming the class structure is something like this...
public PlacesInfo
(final String placeId
) { this.placeId = placeId;
}
@Override
public int hashCode() {
int hash = 5;
hash = 97 * hash + Objects.hashCode(this.placeId);
return hash;
}
@Override
public boolean equals
(Object obj
) { if (obj == null) {
return true;
}
if (this.getClass() != obj.getClass()) {
return false;
}
final PlacesInfo other = (PlacesInfo) obj;
if (!Objects.equals(this.placeId, other.placeId)) {
return false;
}
return true;
}
// Added toString to make printing easier on the eyes
@Override
return placeId;
}
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwppbXBvcnQgamF2YS51dGlsLk9iamVjdHM7CmltcG9ydCBqYXZhLnV0aWwuU2V0OwoKLyoqCiAqIEBhdXRob3IgT2JpY2VyZQogKi8KcHVibGljIGNsYXNzIE1haW4gewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgZmluYWwgU2V0PFBsYWNlc0luZm8+IHBsYWNlSWQgPSBuZXcgSGFzaFNldDw+KCk7CgogICAgICAgIHBsYWNlSWQuYWRkKG5ldyBQbGFjZXNJbmZvKCJGb28iKSk7CiAgICAgICAgcGxhY2VJZC5hZGQobmV3IFBsYWNlc0luZm8oIkJhciIpKTsKICAgICAgICBwbGFjZUlkLmFkZChuZXcgUGxhY2VzSW5mbygiRm9vIikpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGxhY2VJZCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUGxhY2VzSW5mbyB7CgogICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHBsYWNlSWQ7CgogICAgICAgIC8vIEFzc3VtaW5nIHRoZSBjbGFzcyBzdHJ1Y3R1cmUgaXMgc29tZXRoaW5nIGxpa2UgdGhpcy4uLgoKICAgICAgICBwdWJsaWMgUGxhY2VzSW5mbyhmaW5hbCBTdHJpbmcgcGxhY2VJZCkgewogICAgICAgICAgICB0aGlzLnBsYWNlSWQgPSBwbGFjZUlkOwogICAgICAgIH0KCiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgICAgaW50IGhhc2ggPSA1OwogICAgICAgICAgICBoYXNoID0gOTcgKiBoYXNoICsgT2JqZWN0cy5oYXNoQ29kZSh0aGlzLnBsYWNlSWQpOwogICAgICAgICAgICByZXR1cm4gaGFzaDsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CiAgICAgICAgICAgIGlmIChvYmogPT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Q2xhc3MoKSAhPSBvYmouZ2V0Q2xhc3MoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZpbmFsIFBsYWNlc0luZm8gb3RoZXIgPSAoUGxhY2VzSW5mbykgb2JqOwogICAgICAgICAgICBpZiAoIU9iamVjdHMuZXF1YWxzKHRoaXMucGxhY2VJZCwgb3RoZXIucGxhY2VJZCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZGVkIHRvU3RyaW5nIHRvIG1ha2UgcHJpbnRpbmcgZWFzaWVyIG9uIHRoZSBleWVzCiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgICAgcmV0dXJuIHBsYWNlSWQ7CiAgICAgICAgfQogICAgfQp9Cg==