Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections 为什么';t TreeSet接受重复的自定义对象,即使在自定义对象中未重写equals和hashcode? 公共类Coll{ 公共静态void main(字符串[]args){ Set Set=新树集(新的Gold()); 银牌=新银牌(“1”);_Collections_Set_Hashset_Treeset - Fatal编程技术网

Collections 为什么';t TreeSet接受重复的自定义对象,即使在自定义对象中未重写equals和hashcode? 公共类Coll{ 公共静态void main(字符串[]args){ Set Set=新树集(新的Gold()); 银牌=新银牌(“1”);

Collections 为什么';t TreeSet接受重复的自定义对象,即使在自定义对象中未重写equals和hashcode? 公共类Coll{ 公共静态void main(字符串[]args){ Set Set=新树集(新的Gold()); 银牌=新银牌(“1”);,collections,set,hashset,treeset,Collections,Set,Hashset,Treeset,为什么';t TreeSet接受重复的自定义对象,即使在自定义对象中未重写equals和hashcode? 公共类Coll{ 公共静态void main(字符串[]args){ Set Set=新树集(新的Gold()); 银牌=新银牌(“1”); 银2=新银(“1”); 套装。添加(银色); System.out.println(set.add(silver2)); System.out.println(set.size()); } } 银牌{ 私有字符串数量; 公共银(串数量){ 该

为什么';t TreeSet接受重复的自定义对象,即使在自定义对象中未重写equals和hashcode?
公共类Coll{
公共静态void main(字符串[]args){
Set Set=新树集(新的Gold());
银牌=新银牌(“1”);
银2=新银(“1”);
套装。添加(银色);
System.out.println(set.add(silver2));
System.out.println(set.size());
}
}
银牌{
私有字符串数量;
公共银(串数量){
该数量=数量;
}
公共字符串getQty(){
退货数量;
}
公共作废设置数量(字符串数量){
该数量=数量;
}
}
类比较器{
公共整数比较(银色obj1、银色obj2){
返回obj1.getQty().compareTo(obj2.getQty());
}
}

正确的问题是,我在这个类(silver)中创建了两个自定义对象silver和silver2我没有同时覆盖equals()和hashcode(),我将这些对象插入到treeset中,因为我没有覆盖hashcode和equals方法它应该同时接受这两个对象,但它只接受一个对象。它背后的原因是什么?正确的问题是我在这个类中创建了两个自定义对象silver和silver2类(silver))我没有重写equals()和hashcode(),我将这些对象插入treeset,因为我没有重写hashcode和equals方法,它应该接受这两个对象,但它只接受一个对象。背后的原因是什么?
public class Coll {
    public static void main(String[] args) {
        Set<Silver> set = new TreeSet<Silver>(new Gold());
        Silver silver = new Silver("1");
        Silver silver2 = new Silver("1");
        set.add(silver);
        System.out.println(set.add(silver2));
        System.out.println(set.size()); 
    }
}

class Silver {
    private String qty;

    public Silver(String qty) {
        this.qty = qty;
    }

    public String getQty() {
        return qty;
    }

    public void setQty(String qty) {
        this.qty = qty;
    }
}

class Gold implements Comparator<Silver> {
    public int compare(Silver obj1, Silver obj2) {
        return obj1.getQty().compareTo(obj2.getQty());
    }
}