提交 8488c076 编写于 作者: 沉默王二's avatar 沉默王二 💬

图片路径

上级 2f842adf
......@@ -24,7 +24,7 @@ public interface Queue<E> extends Collection<E> {}
当需要使用栈时,Java 已不推荐使用*Stack*,而是推荐使用更高效的*ArrayDeque*(双端队列),原因我们第一次讲[集合框架](https://tobebetterjavaer.com/collection/gailan.html)的时候,其实已经聊过了,Stack 是一个“原始”类,它的核心方法上都加了 `synchronized` 关键字以确保线程安全,当我们不需要线程安全(比如说单线程环境下)性能就会比较差。
![](https://files.mdnice.com/user/3903/ebc95ae8-73c0-45cf-acd2-ec4df4677a22.png)
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/collection//arraydeque-51e3552c-af39-4d00-8494-1ff0a4913357.png)
也就是说,当需要使用栈时候,请首选*ArrayDeque*
......
......@@ -243,7 +243,7 @@ ArrayList 在第一次执行 add 后会扩容为 10,那 ArrayList 第二次扩
你可以通过在 ArrayList 中添加第 11 个元素来 debug 验证一下。
![](https://files.mdnice.com/user/3903/5c7ad981-03f4-4b86-a452-f77f6f8c25ce.png)
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/collection//arraylist-d01f248c-114f-47e3-af18-7135feac2a5e.png)
### 04、向 ArrayList 的指定位置添加元素
......
......@@ -143,7 +143,7 @@ public synchronized boolean add(E e) {
>如果不需要线程安全,建议使用ArrayList代替Vector。
![](https://files.mdnice.com/user/3903/22514cd2-10a5-4ce5-bea2-6276f858c2a1.png)
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/collection//gailan-20bfd65a-1f1d-4de7-a3e3-3dda739e6f9d.png)
Stack 是 Vector 的一个子类,本质上也是由动态数组实现的,只不过还实现了先进后出的功能(在 get、set、add 方法的基础上追加了 pop「返回并移除栈顶的元素」、peek「只返回栈顶元素」等方法),所以叫栈。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册