在List中判断两个元素相等的依据是equals返回true,在indexof和remove方法中都有所体现。
源代码:
if(o.equals(elementData[i]))
return i;
AbstractList抽象类实现了List接口,但是其执行add remove操作会抛出UnsupportedOperationException,实现的源代码为:
public E remove(int index) {
thrownewUnsupportedOperationException();
}
所以所有继承AbstractList并没有重写add和remove的类都不能执行add和remove操作,Arrays.asList方法返回的是Arrays$ArrayList类,就是属于这种情况,所以它不能add和remove,称之为固定长度的List
Queue
有六个方法,但其实就三个方法:
1. 增加 offer和add
2. 获取队头 peek(偷看,一瞥)和 element
3. 删除队头 poll(投票,剪短)和 remove
前面的方法优与后面的方法在队列容量有限制的时候add可能抛出异常,offer不会,在空队列的情况下,peek poll返回null, element和remove抛出异常。
Deque(双端队列)两个实现类 ArrayDeque LinkedList(同时实现了List接口)
双端队列可以模拟出栈的效果。