ArrayList学习
ArrayList的底层是数组,决定了它根据索引获得元素的性能高,在最后添加或删除元素的性能高,往中间插入,删除元素性能低的特点;
ArrayList允许存放重复的元素;
使用注意点:
1,避免使用增强for循环和iteraotor进行迭代,因为增强for循环的底层就是实例化一个iterator对象,而生成iterator以及ierator的next方法开销较大(也有一种说法是,因为
ArrayList实现了RandomAccess接口,该接口的实现类使用iterator进行迭代的性能会比较差,所以不应该使用iterator);
2,如果能预判ArrayList的元素的个数,应该在实例化时指定其容量,因为ArrayList扩容的可能开销很大(需要实例化一个新的数组,并把旧的数组复制进去);
3,如果需要多次王中间插入元素或者删除中间的元素,则避免使用ArrayList,转而使用LinkedList;
4,范围操作,可调用ArrayList的subList(int fromIndex, int toIndex),包括前者,不包括后者,返回的List仍然引用原列表的元素,所以改变原列表对应的元素,子列表对应的元素也会被改变,反之亦然;
5,在添加大量元素时,可以调用ensureCapacity()方法来增加容量,避免多次扩容(造成很大的开销);
6,在迭代中需要改变列表的内部结构,应该使用迭代器进行迭代,并使用其进行remove;
浙公网安备 33010602011771号