Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
beginnersbook-zh
提交
74a07961
B
beginnersbook-zh
项目概览
OpenDocCN
/
beginnersbook-zh
大约 1 年 前同步成功
通知
0
Star
107
Fork
30
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beginnersbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74a07961
编写于
10月 08, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-10-08 19:54:43
上级
4313db70
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
59 addition
and
55 deletion
+59
-55
docs/java-collection/41.md
docs/java-collection/41.md
+3
-3
docs/java-collection/42.md
docs/java-collection/42.md
+15
-11
docs/java-collection/44.md
docs/java-collection/44.md
+16
-16
docs/java-collection/45.md
docs/java-collection/45.md
+9
-9
docs/java-collection/46.md
docs/java-collection/46.md
+16
-16
未找到文件。
docs/java-collection/41.md
浏览文件 @
74a07961
...
...
@@ -2,11 +2,11 @@
> 原文: [https://beginnersbook.com/2013/12/how-to-convert-arraylist-to-string-array-in-java/](https://beginnersbook.com/2013/12/how-to-convert-arraylist-to-string-array-in-java/)
在这篇文章中,我们共享了两种转换
[
ArrayList
](
https://beginnersbook.com/2013/12/java-arraylist/
"ArrayList"
)
<
String
>
的方法。到 String 数组
。
在这篇文章中,我们共享了两种转换
[
`ArrayList<String>`
](
https://beginnersbook.com/2013/12/java-arraylist/
)
到
`String`
数组的方法
。
### 方法 1:使用`ArrayList get()`方法手动转换
这是将所有
`ArrayList<String>`
元素复制到
`String Array[]`
的手动方式。在这个例子中,我们通过三个步骤将整个列表复制到数组中 a)首先我们使用
`size()`
方法获得 ArrayList 大小 b)使用
`get()`
方法获取列表的每个元素,最后 c)将每个元素分配给相应的数组元素使用赋值
`= operator
`
。
这是将所有
`ArrayList<String>`
元素复制到
`String Array[]`
的手动方式。在这个例子中,我们通过三个步骤将整个列表复制到数组中 a)首先我们使用
`size()`
方法获得
`ArrayList`
大小 b)使用
`get()`
方法获取列表的每个元素,最后 c)将每个元素分配给相应的数组元素使用赋值运算符
`=
`
。
```
java
package
beginnersbook.com
;
...
...
@@ -48,7 +48,7 @@ String4
### 方法 2:使用`toArray()`方法进行转换
在上面的例子中,我们手动将
`ArrayList`
的每个元素复制到数组中。但是有一个方法
`toArray()`
可以将字符串类型的
ArrayList 转换为字符串数组。更多关于
[
toArray()
的信息
](
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray(
)
)。
在上面的例子中,我们手动将
`ArrayList`
的每个元素复制到数组中。但是有一个方法
`toArray()`
可以将字符串类型的
`ArrayList`
转换为字符串数组。更多关于
[
`toArray()`
的信息
](
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray(
)
)。
```
java
package
beginnersbook.com
;
...
...
docs/java-collection/42.md
浏览文件 @
74a07961
...
...
@@ -2,19 +2,19 @@
> 原文: [https://beginnersbook.com/2013/12/how-to-convert-array-to-arraylist-in-java/](https://beginnersbook.com/2013/12/how-to-convert-array-to-arraylist-in-java/)
在上一个教程中,我们共享了两个使用示例将
ArrayList 转换为 Array 的方法
[
。这里我们分享三种不同的方式将 Array 转换为 ArrayList。基本上我们将 String Array 转换为 String 类型的 ArrayList。
](
https://beginnersbook.com/2013/12/how-to-convert-arraylist-to-string-array-in-java/
)
在上一个教程中,我们共享了两个使用示例将
`ArrayList`
转换为数组的方法。这里我们分享三种不同的方式将数组转换为
`ArrayList`
。基本上我们将
`String`
数组转换为
`String`
类型的
`ArrayList`
。
`String array[] to ArrayList
<String>
`
`String array[] to ArrayList
<String>
`
### 方法 1:使用`Arrays.asList()`进行转换
句法:
`ArrayList
<T> arraylist= new ArrayList<T>
(Arrays.asList(arrayname));`
`ArrayList
<T> arraylist = new ArrayList<T>
(Arrays.asList(arrayname));`
例:
在这个例子中,我们使用
[
Arrays.asList
](
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...
)
)
方法将
`Array`
转换为
`ArrayList`
。
在这个例子中,我们使用
[
`Arrays.asList`
](
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...
)
)
方法将
`Array`
转换为
`ArrayList`
。
```
java
import
java.util.*
;
...
...
@@ -54,17 +54,21 @@ New City3
### 方法 2:`Collections.addAll`方法
[
Collections.addAll
](
https://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#addAll(java.util.Collection,
T...))
方法将所有数组元素添加到指定的集合中。这就是调用
`Collections.addAll`
方法的方法。它与
`Arrays.asList`
方法的作用相同,但它比它快得多,因此性能方面这是将数组转换为
`ArrayList`
的最佳方法。
`Collections.addAll`
方法将所有数组元素添加到指定的集合中。这就是调用
`Collections.addAll`
方法的方法。它与
`Arrays.asList`
方法的作用相同,但它比它快得多,因此性能方面这是将数组转换为
`ArrayList`
的最佳方法。
`String array[]={new Item(1), new Item(2), new Item(3), new Item(4)};
```
java
String
array
[]={
new
Item
(
1
),
new
Item
(
2
),
new
Item
(
3
),
new
Item
(
4
)};
ArrayList
&
lt
;
T
&
gt
;
arraylist
=
new
ArrayList
&
lt
;
T
&
gt
;();
Collections.addAll(arraylist, array);`
Collections
.
addAll
(
arraylist
,
array
);
```
或
`
```
java
Collections
.
addAll
(
arraylist
,
new
Item
(
1
),
new
Item
(
2
),
new
Item
(
3
),
new
Item
(
4
));
`
实施例
```
`
实现示例
```java
import java.util.*;
...
...
@@ -94,7 +98,7 @@ public class Example2 {
}
```
产量
结果:
```java
Hi
...
...
docs/java-collection/44.md
浏览文件 @
74a07961
...
...
@@ -2,41 +2,41 @@
> 原文: [https://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/](https://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/)
[
ArrayList
](
https://beginnersbook.com/2013/12/java-arraylist/
)
和
[
Vector
](
https://beginnersbook.com/2013/12/vector-in-java/
)
都在内部使用 Array 作为数据结构。但是,它们存储和处理数据的方式几乎没有差异。在这篇文章中,我们将讨论 ArrayList 和 Vector
之间的差异和相似之处。
[
`ArrayList`
](
https://beginnersbook.com/2013/12/java-arraylist/
)
和
[
`Vector`
](
https://beginnersbook.com/2013/12/vector-in-java/
)
都在内部使用数组作为数据结构。但是,它们存储和处理数据的方式几乎没有差异。在这篇文章中,我们将讨论
`ArrayList`
和
`Vector`
之间的差异和相似之处。
## `ArrayList` Vs `Vector`:
1)
**同步**
:
ArrayList 是非同步的,这意味着多个线程可以同时在 ArrayList 上工作。对于例如如果一个线程正在对 ArrayList 执行添加操作,则可能有另一个线程在多线程环境中同时对 ArrayList
执行删除操作
1)
**同步**
:
`ArrayList`
是非同步的,这意味着多个线程可以同时在
`ArrayList`
上工作。对于例如如果一个线程正在对
`ArrayList`
执行添加操作,则可能有另一个线程在多线程环境中同时对
`ArrayList`
执行删除操作
Vector 同步。这意味着如果一个线程正在处理 Vector,则没有其他线程可以获取它。与 ArrayList
不同,一次只有一个线程可以对向量执行操作。
`Vector`
同步。这意味着如果一个线程正在处理
`Vector`
,则没有其他线程可以获取它。与
`ArrayList`
不同,一次只有一个线程可以对向量执行操作。
2)
**调整大小:**
ArrayList 和 Vector 都可以动态增长和缩小以保持存储的最佳使用,但是它们调整大小的方式是不同的。调整大小时,ArrayList 的大小增加一半,而增长时,Vector
默认大小增加一倍。
2)
**调整大小:**
`ArrayList`
和
`Vector`
都可以动态增长和缩小以保持存储的最佳使用,但是它们调整大小的方式是不同的。调整大小时,
`ArrayList`
的大小增加一半,而增长时,
`Vector`
默认大小增加一倍。
3)
**性能**
:
ArrayList 提供更好的性能,因为它是非同步的。向量操作性能较差,因为它们是线程安全的,在 Vector
上工作的线程会对其进行锁定,这使得其他线程等待直到锁定被释放。
3)
**性能**
:
`ArrayList`
提供更好的性能,因为它是非同步的。向量操作性能较差,因为它们是线程安全的,在
`Vector`
上工作的线程会对其进行锁定,这使得其他线程等待直到锁定被释放。
4)
**
失败快速**
:首先让我解释什么是快速失败:如果集合(ArrayList,vector 等)通过任何方式进行结构修改,除了
**添加或删除方法**
迭代器,在创建迭代器后,迭代器将抛出
[
`ConcurrentModificationException`
](
https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html
)
。结构修饰
是指从集合中添加或删除元素。
4)
**
快速失败**
:首先让我解释什么是快速失败:如果集合(
`ArrayList`
,
`vector`
等)通过任何方式进行结构修改,除了
**添加或删除方法**
,在创建迭代器后,迭代器将抛出
[
`ConcurrentModificationException`
](
https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html
)
。结构修改
是指从集合中添加或删除元素。
根据
[
Vector javadoc
](
https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html
"javadoc"
)
,Vector 返回的枚举不是快速失败的。另一方面,ArrayList 返回的 iterator 和 listIterator
是快速失败的。
根据
[
`Vector` javadoc
](
https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html
"javadoc"
)
,
`Vector`
返回的迭代器不是快速失败的。另一方面,
`ArrayList`
返回的
`iterator`
和
`listIterator`
是快速失败的。
5)
**谁真的属于集合框架?**
该向量不是集合框架的一部分,它已被包含在集合中。它可以被视为旧版代码。
关于 List 集合不能做的 Vector 没有任何内容。因此应避免使用 Vector。如果需要线程安全操作,则使 ArrayList 同步,如本文下一节所述,或者使用
[
CopyOnWriteArrayList
](
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html
)
,它是 ArrayList
的线程安全变体。
5)
**谁真的属于集合框架?**
该向量不是集合框架的一部分,它已被包含在集合中。它可以被视为旧版代码。
`Vector`
没有任何
`List`
集合不能做的内容。因此应避免使用
`Vector`
。如果需要线程安全操作,则使
`ArrayList`
同步,如本文下一节所述,或者使用
[
`CopyOnWriteArrayList`
](
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html
)
,它是
`ArrayList`
的线程安全变体。
这些类之间的
**相似性很少,如下所示:**
1.
Vector 和 ArrayList
都使用可扩展的数组数据结构。
2.
这些类(
Vector 和 ArrayList)返回的迭代器和 listIterator
是快速失败的。
1.
`Vector`
和
`ArrayList`
都使用可扩展的数组数据结构。
2.
这些类(
`Vector`
和
`ArrayList`
)返回的迭代器和
`listIterator`
是快速失败的。
3.
它们都是有序的集合类,因为它们维护元素的插入顺序。
4.
向量
&
ArrayList
都允许重复和空值。
4.
向量
和
`ArrayList`
都允许重复和空值。
5.
当溢出和删除发生时,它们会自动增长和缩小。
### 何时使用`ArrayList`以及何时使用`Vector`?
这完全取决于要求。如果需要执行“线程安全”操作,则向量是最好的选择,因为它确保一次只有一个线程访问集合。
**性能:**
同步操作比非同步操作消耗更多时间,因此如果不需要线程安全操作,
ArrayList
是更好的选择,因为并发进程会提高性能。
**性能:**
同步操作比非同步操作消耗更多时间,因此如果不需要线程安全操作,
`ArrayList`
是更好的选择,因为并发进程会提高性能。
**如何使
ArrayList
同步?**
**如何使
`ArrayList`
同步?**
如上所述,
ArrayList
方法是非同步的,但如果有需要,你可以让它们像这样同步 -
如上所述,
`ArrayList`
方法是非同步的,但如果有需要,你可以让它们像这样同步 -
```
java
//Use Collecions.synzhonizedList method
...
...
@@ -56,5 +56,5 @@ synchronized (list) {
#### 参考文献:
*
[
向量文档
](
https://docs.oracle.com/javase/6/docs/api/java/util/Vector.html
)
*
[
ArrayList 文档
](
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
)
\ No newline at end of file
*
[
`Vector`文档
](
https://docs.oracle.com/javase/6/docs/api/java/util/Vector.html
)
*
[
`ArrayList`文档
](
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
)
\ No newline at end of file
docs/java-collection/45.md
浏览文件 @
74a07961
...
...
@@ -2,13 +2,13 @@
> 原文: [https://beginnersbook.com/2013/12/difference-between-arraylist-and-hashmap-in-java/](https://beginnersbook.com/2013/12/difference-between-arraylist-and-hashmap-in-java/)
[
ArrayList
](
https://beginnersbook.com/2013/12/java-arraylist/
)
和
[
HashMap
](
https://beginnersbook.com/2013/12/hashmap-in-java-with-example/
)
是 Java 中常用的两个集合类。尽管两者都是集合框架的一部分,但它们存储和处理数据的方式却完全不同。在这篇文章中,我们将看到这两个集合之间的主要区别。
[
`ArrayList`
](
https://beginnersbook.com/2013/12/java-arraylist/
)
和
[
`HashMap`
](
https://beginnersbook.com/2013/12/hashmap-in-java-with-example/
)
是 Java 中常用的两个集合类。尽管两者都是集合框架的一部分,但它们存储和处理数据的方式却完全不同。在这篇文章中,我们将看到这两个集合之间的主要区别。
## Java 中的`ArrayList`与`HashMap`
1)
**实现**
:
**ArrayList**
实现 List 接口,而
**HashMap**
是 Map 接口的实现。 List 和 Map
是两个完全不同的集合接口。
1)
**实现**
:
`ArrayList`
实现
`List`
接口,而
`HashMap`
是
`Map`
接口的实现。
`List`
和
`Map`
是两个完全不同的集合接口。
2)
**内存消耗**
:
ArrayList
单独存储元素的值,并在内部维护每个元素的索引。
2)
**内存消耗**
:
`ArrayList`
单独存储元素的值,并在内部维护每个元素的索引。
```
java
ArrayList
<
String
>
arraylist
=
new
ArrayList
<
String
>();
...
...
@@ -16,7 +16,7 @@
arraylist
.
add
(
"Test String"
);
```
HashMap 存储密钥和
&
价值对。对于每个值,必须在 HashMap 中关联一个键。这清楚地表明,与 ArrayList 相比,HashMap
中的内存消耗很高。
`HashMap`
存储键值对。对于每个值,必须在
`HashMap`
中关联一个键。这清楚地表明,与
`ArrayList`
相比,
`HashMap`
中的内存消耗很高。
```
java
HashMap
<
Integer
,
String
>
hmap
=
new
HashMap
<
Integer
,
String
>();
...
...
@@ -24,15 +24,15 @@ HashMap<Integer, String> hmap= new HashMap<Integer, String>();
hmap
.
put
(
123
,
"Test String"
);
```
3)
**
Order**
:ArrayList 维护插入顺序,而 HashMap 则没有。这意味着 ArrayList 以与插入列表相同的顺序返回列表项。另一方面,HashMap
不维护任何顺序,返回的键值对不按任何顺序排序。
3)
**
顺序**
:
`ArrayList`
维护插入顺序,而
`HashMap`
则没有。这意味着
`ArrayList`
以与插入列表相同的顺序返回列表项。另一方面,
`HashMap`
不维护任何顺序,返回的键值对不按任何顺序排序。
4)
**重复**
:
`ArrayList`
允许重复元素,但
`HashMap`
不允许重复键(它允许重复值)。
5)
**
Nulls**
:ArrayList 可以包含任意数量的 null 元素。 HashMap
允许一个空键和任意数量的空值。
5)
**
空值**
:
`ArrayList`
可以包含任意数量的
`null`
元素。
`HashMap`
允许一个空键和任意数量的空值。
6)
**
get 方法**
:在 ArrayList 中我们可以
**通过指定它的索引得到**
元素。在 HashMap
中,通过指定相应的键来获取元素。
6)
**
`get`方法**
:在
`ArrayList`
中我们可以
**通过指定它的索引得到**
元素。在
`HashMap`
中,通过指定相应的键来获取元素。
#### 参考文献:
*
[
HashMap javadoc
](
https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
)
*
[
ArrayList 文档
](
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
)
\ No newline at end of file
*
[
`HashMap` javadoc
](
https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
)
*
[
`ArrayList`文档
](
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
)
\ No newline at end of file
docs/java-collection/46.md
浏览文件 @
74a07961
...
...
@@ -2,38 +2,38 @@
> 原文: [https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/](https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/)
[
ArrayList
](
https://beginnersbook.com/2013/12/java-arraylist/
"ArrayList"
)
和
[
LinkedList
](
https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/
"LinkedList"
)
都实现了 List
接口,它们的方法和结果几乎相同。然而,它们之间几乎没有差异,这取决于要求,使一个优于另一个。
[
`ArrayList`
](
https://beginnersbook.com/2013/12/java-arraylist/
)
和
[
`LinkedList`
](
https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/
)
都实现了
`List`
接口,它们的方法和结果几乎相同。然而,它们之间几乎没有差异,这取决于要求,使一个优于另一个。
## `ArrayList`与`LinkedList`
1)
**搜索**
:与
LinkedList 搜索操作相比,ArrayList 搜索操作非常快。 ArrayList 中的
`get(int index)`
给出
`O(1)`
的性能,而 LinkedList
性能为
`O(n)`
。
1)
**搜索**
:与
`LinkedList`
搜索操作相比,
`ArrayList`
搜索操作非常快。
`ArrayList`
中的
`get(int index)`
给出
`O(1)`
的性能,而
`LinkedList`
性能为
`O(n)`
。
原因:
ArrayList 维护其元素的基于索引的系统,因为它隐式使用数组数据结构,这使得搜索列表中的元素更快。另一方面,LinkedList 实现了
**双向链表**
,它需要遍历遍历搜索元素的所有
元素。
原因:
`ArrayList`
维护其元素的基于索引的系统,因为它隐式使用数组数据结构,这使得搜索列表中的元素更快。另一方面,
`LinkedList`
实现了
**双向链表**
,它需要遍历所有元素来搜索
元素。
2)
**删除**
:
LinkedList 删除操作给出
`O(1)`
性能,而 ArrayList 提供可变性能:
`O(n)`
在最坏的情况下(同时删除第一个元素)和
`O(1)`
在最好的情况下
(删除最后一个元素)。
2)
**删除**
:
`LinkedList`
删除操作给出
`O(1)`
性能,而
`ArrayList`
提供可变性能:在最坏的情况下
`O(n)`
(删除第一个元素)和在最好的情况下
`O(1)`
(删除最后一个元素)。
结论:与
ArrayList 相比,LinkedList
元素删除更快。
结论:与
`ArrayList`
相比,
`LinkedList`
元素删除更快。
原因:
LinkedList 的每个元素都维护着两个指针(地址),这些指针指向列表中的两个邻居元素。因此,移除仅需要改变将要移除的节点的两个相邻节点(元素)中的指针位置。在 ArrayList 中,需要移动所有元素以填充由 remove
元素创建的空间。
原因:
`LinkedList`
的每个元素都维护着两个指针(地址),这些指针指向列表中的两个邻居元素。因此,移除仅需要改变将要移除的节点的两个相邻节点(元素)中的指针位置。在
`ArrayList`
中,需要移动所有元素以填充由要移除的
元素创建的空间。
3)
**插入性能**
:
LinkedList add 方法给出
`O(1)`
性能,而 ArrayList
在最坏情况下给出
`O(n)`
。原因与删除说明相同。
3)
**插入性能**
:
`LinkedList add`
方法给出
`O(1)`
性能,而
`ArrayList`
在最坏情况下给出
`O(n)`
。原因与删除说明相同。
4)
**内存开销**
:
ArrayList 维护索引和元素数据,而 LinkedList 维护元素数据和相邻节点的两个指针,因此 LinkedList
中的内存消耗比较高。
4)
**内存开销**
:
`ArrayList`
维护索引和元素数据,而
`LinkedList`
维护元素数据和相邻节点的两个指针,因此
`LinkedList`
中的内存消耗比较高。
这些类之间的
**相似性很少,如下所示:**
1.
ArrayList 和 LinkedList 都是 List
接口的实现。
2.
它们都维护元素的插入顺序,这意味着在显示
ArrayList 和 LinkedList 元素时,结果集将具有将元素插入 List
的相同顺序。
3.
这两个类都是非同步的,可以使用
[
`Collections.synchronizedList`
](
https://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedList(java.util.List
)
)
方法显式同步。
4.
这些类返回的迭代器和
listIterator 是快速失败的(如果在创建迭代器之后的任何时候对列表进行结构修改,除非通过迭代器自己的 remove 或 add 方法,迭代器将抛出
[
ConcurrentModificationException
](
https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html
)
)。
1.
`ArrayList`
和
`LinkedList`
都是
`List`
接口的实现。
2.
它们都维护元素的插入顺序,这意味着在显示
`ArrayList`
和
`LinkedList`
元素时,结果集将具有将元素插入
`List`
的相同顺序。
3.
这两个类都是非同步的,可以使用
[
`Collections.synchronizedList`
](
https://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedList(java.util.List
)
)
方法显式同步。
4.
这些类返回的迭代器和
`listIterator`
是快速失败的(如果在创建迭代器之后的任何时候对列表进行结构修改,除非通过迭代器自己的
`remove`
或
`add`
方法,迭代器将抛出
[
`ConcurrentModificationException`
](
https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html
)
)。
### 何时使用`LinkedList`以及何时使用`ArrayList`?
1)如上所述,与 ArrayList(
`O(n)`
)相比,
insertList 和 remove 操作在 LinkedList 中提供了良好的性能(
`O(1)`
)。因此,如果在应用中需要频繁添加和删除,则 LinkedList
是最佳选择。
1)如上所述,与 ArrayList(
`O(n)`
)相比,
`insertList`
和
`remove`
操作在
`LinkedList`
中提供了良好的性能(
`O(1)`
)。因此,如果在应用中需要频繁添加和删除,则
`LinkedList`
是最佳选择。
2)搜索(
get 方法)操作在 Arraylist(
`O(1)`
)中很快但在 LinkedList(
`O(n)`
中)没有,因此如果添加和删除操作较少且搜索操作要求较多,则 ArrayList
将是您最好的选择。
2)搜索(
`get`
方法)操作在
`Arraylist`
(
`O(1)`
)中很快但在
`LinkedList`
(
`O(n)`
中)没有,因此如果添加和删除操作较少且搜索操作要求较多,则
`ArrayList`
将是您最好的选择。
#### 参考文献:
*
[
ArrayList 文档
](
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html
)
*
[
LinkedList Javadoc
](
https://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html
)
\ No newline at end of file
*
[
`ArrayList`文档
](
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html
)
*
[
`LinkedList` Javadoc
](
https://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html
)
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录