首先,它们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层基于双向链表实现的。由于底层数据结构不同,它们所适应的场景也不同,ArrayList更适合随机查找,LinkedList更适合删除和添加,查询、添加、删除的时间复杂度不同。另外ArrayList和LinkedList欧实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当做队列来使用。