问题描述
自然排序下TreeSet和TreeMap都是使用compareTo方法来防止元素重复,而compareTo方法不能传入null值,会出现空指针异常,让比较的对象指向了一个null值。使用比较器排序,TreeSet和TreeMap可以传入有且仅有一个null值,传入第二个会报空指针异常。总结:compareTo方法是使得TreeSet和TreeMap在自然排序下不能传入null值的罪魁祸首问:为什么equals方法可以传入null值,而compareTo方法不能传入null值?
解决方案
解决方案二:
compareTo()方法是用于比较两个对象的大小,如果传入NULL值,由于NULL不能与任何对象比较大小(NULL不等于任何对象)所以向compareTo方法传入NULL值会出现空指针异常;但是equal()是方法是用于比较两个对象是否相等,当equals()方法传入参数为NULL时是判断字符串是否为空,所以equals()方法可以传入NULL(但是不能试用null.equals("字符串"))。
时间: 2024-07-29 01:21:36