java - How do I say that an object is present in a Set that also has a treeset? -
i have s set of object a.
class { string text1; string text2 treeset<classaa> classaaset; @override public boolean equals(object b){ } @override public int hashcode(){ } } the other class:
class aa { string y; string z; @override public int hashcode() { return objects.hash(y,z) } @override public int compareto(classaa other) { return y.compareto(other.y) } } i have set of a's , single object a. how set<a>aset.contains(a)?
internally, since have treeset, ignoring equals implementation.
it clearer if posted code correct extent compiled. anyway:
your class aa should fulfil 3 requirements: (1) equal objects should return same hashcode(), (2) compareto() should consistent equals(), , (3) compareto() , treeset work correctly, class should implement comparable<aa>.
i hope can add implements clause (3) on own. (2), @ documentation of comparable. easiest fix override equals() aa equal aa same y. unfortunately, break (1) because current hashcode method depends on z too.
so decide means 2 aa objects equal. in other words, given classaaset in a , aa object, means set contains such aa. enough have same y or should have both same y , same z? code equals(), hashcode() , compareto() reflect decision.
actually, believe treeset not use hashcode(), in dirty solution live without fulfilling (1), without overriding hashcode() @ all. in trouble if class used in new context other time, wouldn’t recommend it.
Comments
Post a Comment