/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
static class X implements Comparable<X> {
this.campo1 = campo1;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((campo1 == null) ? 0 : campo1.hashCode());
return result;
}
@Override
public boolean equals
(Object obj
) { if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
X other = (X) obj;
if (campo1 == null) {
if (other.campo1 != null)
return false;
} else if (!campo1.equals(other.campo1))
return false;
return true;
}
@Override
public int compareTo(X o) {
return campo1.compareTo(o.campo1);
}
}
public static void main
(String[] args
) {
X x1 = new X("A");
X x2 = new X("B");
X x3 = new X("C");
Set<X> ts = new TreeSet<X>();
ts.add(x2);
ts.add(x3);
System.
out.
println(ts.
contains(x1
));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUgewoKCXN0YXRpYyBjbGFzcyBYIGltcGxlbWVudHMgQ29tcGFyYWJsZTxYPiB7CgkJU3RyaW5nIGNhbXBvMTsKCQkKCQlYKFN0cmluZyBjYW1wbzEpIHsKCQkJdGhpcy5jYW1wbzEgPSBjYW1wbzE7CgkJfQoKCQlAT3ZlcnJpZGUKCQlwdWJsaWMgaW50IGhhc2hDb2RlKCkgewoJCQlmaW5hbCBpbnQgcHJpbWUgPSAzMTsKCQkJaW50IHJlc3VsdCA9IDE7CgkJCXJlc3VsdCA9IHByaW1lICogcmVzdWx0ICsgKChjYW1wbzEgPT0gbnVsbCkgPyAwIDogY2FtcG8xLmhhc2hDb2RlKCkpOwoJCQlyZXR1cm4gcmVzdWx0OwoJCX0KCgkJQE92ZXJyaWRlCgkJcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKCQkJaWYgKHRoaXMgPT0gb2JqKQoJCQkJcmV0dXJuIHRydWU7CgkJCWlmIChvYmogPT0gbnVsbCkKCQkJCXJldHVybiBmYWxzZTsKCQkJaWYgKGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpCgkJCQlyZXR1cm4gZmFsc2U7CgkJCVggb3RoZXIgPSAoWCkgb2JqOwoJCQlpZiAoY2FtcG8xID09IG51bGwpIHsKCQkJCWlmIChvdGhlci5jYW1wbzEgIT0gbnVsbCkKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCX0gZWxzZSBpZiAoIWNhbXBvMS5lcXVhbHMob3RoZXIuY2FtcG8xKSkKCQkJCXJldHVybiBmYWxzZTsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQlAT3ZlcnJpZGUKCQlwdWJsaWMgaW50IGNvbXBhcmVUbyhYIG8pIHsKCQkJcmV0dXJuIGNhbXBvMS5jb21wYXJlVG8oby5jYW1wbzEpOwoJCX0KCQkKCX0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJCgkJWCB4MSA9IG5ldyBYKCJBIik7CgkJWCB4MiA9IG5ldyBYKCJCIik7CgkJWCB4MyA9IG5ldyBYKCJDIik7CgkJU2V0PFg+IHRzID0gbmV3IFRyZWVTZXQ8WD4oKTsKCQl0cy5hZGQoeDIpOwoJCXRzLmFkZCh4Myk7CgkJU3lzdGVtLm91dC5wcmludGxuKHRzLmNvbnRhaW5zKHgxKSk7CgkJCgl9CgkKfQo=