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