ArrayList与LinkedList的区别大致如下:
1.ArrayList基于可变长数组实现的,LinkedList基于双向链表实现的。
2.对于get和set操作,基于数组的ArrayList速度更快。
3.对于insert和remove,基于链表的LinkedList更快。
----------------------------------------------------------------------------------------------------------------------------------
一. ArrayList:
1.ArrayList的构造方法:
1.默认的无参构造方法,会创建一个大小为10的列表。
2.带int的有参构造方法,创建一个用户指定大小的列表。(传入参数不正确会抛出异常)
注意:ArrayList会在列表存满时(注意是存满)而且此时有新的元素加入,此时会自动扩充当前大小的50%+1
后面的+1是为第11个元素存的,也就是说每次开辟新空间时要多加一位给当前要存的元素。 有兴趣可以查看源代码
2.ArrayList的add()方法:
1.带一个参数的add(E e); 将元素加至末尾。返回值是一个boolean变量。
2.带两个参数的add(int index,E e);将index位置以及以后的元素向后移,然后将元素e添加至index位置。该方法无返回值。
注意:下标从零开始
3.get(int index)和set(int index,E e)方法:
4.contains(Object o)方法:
如果列表中有该元素,则返回true。
public boolean contains(Object o){
return indexof(o)>=0;
}
5.remove()方法:
1.remave(int index);根据索引删除。
2.remove(Object o)根据对象删除。
----------------------------------------------------------------------------------------------------------------------------------
二. LinkedList:
1. LinkedList的构造方法:
1.默认的无参构造方法,构造一个空的链表。
2.一个参数(collection集合)的构造方法,用已有集合创建链表。
2.增加操作:
1.add(E e); 添加元素至链表末尾。
2.add(int index,E e); 添加元素到指定位置。
3.addAll(Collection<? extends E> c);将集合c的元素添加至列表尾部。
4.addAll(int index,Collection<? extends E> c);index指定了插入的位置。
3.查操作:
1.get(int index);获取任意位置的元素。
2.getLast()与peekLast()的区别:后者异常返回null,前者异常则会抛出。
3.indexOf(Object o): 返回第一个匹配的索引
4.lastIndexOf(Object o): 返回最后一个匹配的索引
4.删除操作:
1.remove(int index): 删除任意位置的对象
2.remove(Object o): 删除指定对象(该方法从前向后删除第一个匹配的对象)