ArrayList与LinkedList
ArrayList:基于数组实现,地址连续,便于查询不适合频繁插入与删除
LinkedList:基于链表实现,地址不连续,查询耗时较长,已知位置之后插入与删除效率较高(已知位置指已经查询到之后),使用Iterator迭代器查询可提高效率。
测试方法:list中存放50000条Integer数据,每隔一条数据删除一条。
测试机:华为Mate 8
LinkedList:
for (int i = 0; i < lst.size(); i ++) {
if (lst.get(i) % 2 == 0)
lst.remove(i);
}
耗时:1529毫秒
Iterator<Integer> itr = lst.iterator();
while (itr.hasNext()) {
if (itr.next() % 2 == 0)
itr.remove();
}
耗时:5毫秒
ArrayList:
for (int i = 0; i < lst.size(); i ++) {
if (lst.get(i) % 2 == 0)
lst.remove(i);
}
耗时:648毫秒
Iterator<Integer> itr = lst.iterator();
while (itr.hasNext()) {
if (itr.next() % 2 == 0)
itr.remove();
}
耗时:641毫秒