请简要介绍一下ArrayList和LinkedList的区别。并在回答中至少包含三个重点，注意，回答中必须包含代码示例，并且总字数不超过200字。
user
ArrayList和LinkedList都是Java中实现List接口的类，但它们在内部结构、性能方面有所不同。1. 内部结构：ArrayList基于动态数组实现，支持随机访问。LinkedList基于双向链表实现，不支持随机访问，但插入删除元素效率高。2. 性能：ArrayList在插入、删除时需要移动元素，效率较低；而LinkedList在两端插入、删除效率高，中间操作需要遍历。3. 内存占用：LinkedList每个节点需要额外空间存储指针，较ArrayList占用更多内存。

代码示例：
```java
List<Integer> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();
arrayList.add(1); // O(1)
linkedList.add(1); // O(1)
arrayList.add(0, 2); // O(n)
linkedList.add(0, 2); // O(1)
```
assistant