一、总体概括
ArrayList是顺序结构,所以定位很快,但插入,删除数据慢。
LinkedList 是链表结构,定位慢,但插入,删除数据快。
二、相同点:
与ArrayList一样,LinkedList也实现了List接口,可以实现ArrayList中的常用方法:
- add()方法:add 有两种用法:
第一种是直接add对象,把对象加在最后面。
第二种是在指定位置加对象。 - contains() :判断一个对象是否在容器中
判断标准: 是否是同一个对象。 - get()方法: 获取指定位置的对象,但要注意下标越界问题。
- indexOf():用于判断一个对象在ArrayList中所处的位置。
- remove() :用于把对象从ArrayList中删除:
remove可以根据下标删除ArrayList的元素,也可以根据对象删除。 - set(): 用于修改指定位置的元素。
- size() :用于获取ArrayList的大小。
- toArray() :可以把一个ArrayList对象转换为数组。
- addAll() : 把另一个容器所有对象都加进来。
10.clear(): 清空一个ArrayList。
三、不同点
1. 除了实现了List接口外,LinkedList还实现了双向链表结构Deque,可以很方便的在头尾插入删除数据。
//LinkedList是一个双向链表结构的list
LinkedList<Integer> i =new LinkedList<>();
//所以可以很方便的在头部和尾部插入数据
//在尾部插入数据
i.addLast(1);
//在最前面插入数据
i.addFirst(2);
//查看最前面的数据
System.out.println(i.getFirst());
//查看最后面的数据
System.out.println(i.getLast());
//取出最前面的数据
System.out.println(i.removeFirst());
//取出最后面的数据
System.out.println(i.removeLast());
2. LinkedList 除了实现了List和Deque外,还实现了Queue接口(队列)。Queue是先进先出队列 FIFO,常用方法:offer 在最后添加元素,poll 取出第一个元素,peek 查看第一个元素
Queue<Integer> q= new LinkedList<>();
q.offer(1);
System.out.print("把第一个元素peek()出来:\t"+q.peek());
System.out.print("把第一个元素取poll()出来:\t"+q.poll());