关于List,ArrayList中remove(object obj)方法不能删除对象问题

先看下面代码,大家猜猜打印的结果是什么?为什么?
如果您的回答是: 4 ,我想您就有必要看看本文了,因为正确答案是 5
先贴上:ArrayList上的remove源码:
public boolean remove(Object o) {
    if(o == null) {
            for(intindex = 0; index < size; index++)
        if(elementData[index] == null) {
            fastRemove(index);
            returntrue;
        }
    }else{
        for(intindex = 0; index < size; index++)
        if(o.equals(elementData[index])) {
            fastRemove(index);
            returntrue;
        }
        }
    returnfalse;
    }


看源码可知,List在删除对象时,先判断这个对象是否在自己的队列中?而这种判断指的是是否equals
因此,List在删除对象时,如果使用删除对象方法,应该最好重写equals方法,否则最好使用删除下标的方法。
 
本文只针对遇到问题来看的童鞋们,没遇到问题这边文章您会觉得没太大意思,那就。。。
 
欢迎大家,加我qq交流:214044600

你可能感兴趣的:(java)