VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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;

posted on 2016-05-05 21:43  bobo2018  阅读(114)  评论(0)    收藏  举报