JAVA问题:如图:为什么是答案是什么啊呢?为什么?希望高手帮助!

2025-01-07 16:43:45
推荐回答(3个)
回答1:

答案应该选择A与D,
Hashset与ArrayList均继承自Collection接口,ArrayList继承自List,可以插入重复元素,而Hashset拥有比Collection更严格的要求,不允许插入重复元素,所以set.contains(new Foo(1))错误,而list.contains(new Foo(1))正确。因为类Foo覆写了Object类的equals方法,所以,可以判断是不是同一个元素(或者说两元素是否相同),严格意义上来讲,类Foo还要覆写Object中的hashCode方法,因此,new Foo(1).equals(new Foo(1))正确,另外,再说一点,若果类集是TreeSet,SortedMap等可排序的类集,在自定义的类中必须实现comparable接口。
综上,答案为AD

回答2:

应该选A和D吧,Foo对象直接equal的好理解
arraylist的contain方法调用元素对象的equals方法,当然是重写object的次方法
hashset的contain方法不但要考量equals方法,还要考量hashcode是不是相等
顺便的treeset考量的是元素对象实现comparable接口 中的compareTo方法

回答3:

c吧,加入ArrayList的自定义类必须实现hasCode()和equals,加入Set的自定义类只要实现equals。