I expect to have only 2 elements in my Set but I receive 3 elements while printing! How can I define uniqueness?
public class test {
    public static void main(String[] args) {
        class bin {
            int a;
            int b;
            bin (int a, int b){
                this.a=a;
                this.b=b;
            }
            public boolean Equals(bin me) {
                if(this.a==me.a && this.b==me.b)
                    return true;
                else 
                    return false;
            }   
            @Override
            public String toString() {
                return a+" "+b;
            }
        }
        Set<bin> q= new HashSet<bin>();
        q.add(new bin(11,23));
        q.add(new bin(11,23));
        q.add(new bin(44,25));
        System.out.println(q);
    }
}
                There are two issues here
equals should be lowercase and accept an Object  hashCode as wellThe modified code could look like below. Note that the implementation is far from being perfect as in equals you should check for null and whether a type cast is possible etc. Also hashCode is just an example but how to implement such things is another topic.  
import java.util.Set;
import java.util.HashSet;
public class test {
    public static void main(String[] args) {
        class bin{
            int a;
            int b;
            bin (int a, int b){
                this.a=a;
                this.b=b;
            }
            @Override
            public boolean equals(Object me) {
                bin binMe = (bin)me;
                if(this.a==binMe.a && this.b==binMe.b)
                    return true;
                else 
                    return false;
            }   
            @Override
            public int hashCode() {
                return this.a + this.b;
            }
            @Override
            public String toString() {
                return a+" "+b;
            }
        }
        Set<bin> q= new HashSet<bin>();
        q.add(new bin(11,24));
        q.add(new bin(11,24));
        q.add(new bin(10,25));
        q.add(new bin(44,25));
        System.out.println(q);
    }
}
Result:
[11 24, 10 25, 44 25]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With