Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
programiz-zh
提交
63fc36e3
P
programiz-zh
项目概览
OpenDocCN
/
programiz-zh
9 个月 前同步成功
通知
0
Star
48
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
programiz-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
63fc36e3
编写于
7月 01, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-07-01 17:22:52
上级
bee8c003
变更
90
隐藏空白更改
内联
并排
Showing
90 changed file
with
659 addition
and
659 deletion
+659
-659
docs/java/101.md
docs/java/101.md
+2
-2
docs/java/102.md
docs/java/102.md
+1
-1
docs/java/103.md
docs/java/103.md
+2
-2
docs/java/104.md
docs/java/104.md
+1
-1
docs/java/105.md
docs/java/105.md
+1
-1
docs/java/106.md
docs/java/106.md
+1
-1
docs/java/107.md
docs/java/107.md
+2
-2
docs/java/11.md
docs/java/11.md
+3
-3
docs/java/113.md
docs/java/113.md
+1
-1
docs/java/115.md
docs/java/115.md
+1
-1
docs/java/117.md
docs/java/117.md
+1
-1
docs/java/119.md
docs/java/119.md
+1
-1
docs/java/12.md
docs/java/12.md
+1
-1
docs/java/120.md
docs/java/120.md
+1
-1
docs/java/123.md
docs/java/123.md
+5
-5
docs/java/124.md
docs/java/124.md
+3
-3
docs/java/125.md
docs/java/125.md
+1
-1
docs/java/126.md
docs/java/126.md
+4
-4
docs/java/128.md
docs/java/128.md
+1
-1
docs/java/129.md
docs/java/129.md
+1
-1
docs/java/13.md
docs/java/13.md
+1
-1
docs/java/14.md
docs/java/14.md
+2
-2
docs/java/15.md
docs/java/15.md
+2
-2
docs/java/16.md
docs/java/16.md
+3
-3
docs/java/17.md
docs/java/17.md
+2
-2
docs/java/19.md
docs/java/19.md
+4
-4
docs/java/20.md
docs/java/20.md
+3
-3
docs/java/204.md
docs/java/204.md
+4
-4
docs/java/21.md
docs/java/21.md
+5
-5
docs/java/215.md
docs/java/215.md
+4
-4
docs/java/23.md
docs/java/23.md
+1
-1
docs/java/24.md
docs/java/24.md
+6
-6
docs/java/25.md
docs/java/25.md
+6
-6
docs/java/26.md
docs/java/26.md
+5
-5
docs/java/27.md
docs/java/27.md
+2
-2
docs/java/28.md
docs/java/28.md
+5
-5
docs/java/31.md
docs/java/31.md
+5
-5
docs/java/33.md
docs/java/33.md
+3
-3
docs/java/34.md
docs/java/34.md
+2
-2
docs/java/35.md
docs/java/35.md
+2
-2
docs/java/36.md
docs/java/36.md
+2
-2
docs/java/37.md
docs/java/37.md
+2
-2
docs/java/38.md
docs/java/38.md
+3
-3
docs/java/39.md
docs/java/39.md
+1
-1
docs/java/41.md
docs/java/41.md
+2
-2
docs/java/42.md
docs/java/42.md
+2
-2
docs/java/43.md
docs/java/43.md
+1
-1
docs/java/45.md
docs/java/45.md
+2
-2
docs/java/47.md
docs/java/47.md
+1
-1
docs/java/48.md
docs/java/48.md
+4
-4
docs/java/5.md
docs/java/5.md
+9
-9
docs/java/51.md
docs/java/51.md
+2
-2
docs/java/52.md
docs/java/52.md
+2
-2
docs/java/53.md
docs/java/53.md
+3
-3
docs/java/55.md
docs/java/55.md
+3
-3
docs/java/56.md
docs/java/56.md
+9
-9
docs/java/58.md
docs/java/58.md
+1
-1
docs/java/6.md
docs/java/6.md
+8
-8
docs/java/60.md
docs/java/60.md
+1
-1
docs/java/62.md
docs/java/62.md
+1
-1
docs/java/63.md
docs/java/63.md
+17
-17
docs/java/64.md
docs/java/64.md
+5
-5
docs/java/65.md
docs/java/65.md
+4
-4
docs/java/67.md
docs/java/67.md
+1
-1
docs/java/68.md
docs/java/68.md
+5
-5
docs/java/7.md
docs/java/7.md
+4
-4
docs/java/70.md
docs/java/70.md
+68
-68
docs/java/71.md
docs/java/71.md
+33
-33
docs/java/72.md
docs/java/72.md
+8
-8
docs/java/73.md
docs/java/73.md
+21
-21
docs/java/74.md
docs/java/74.md
+22
-22
docs/java/75.md
docs/java/75.md
+1
-1
docs/java/76.md
docs/java/76.md
+29
-29
docs/java/77.md
docs/java/77.md
+51
-51
docs/java/78.md
docs/java/78.md
+42
-42
docs/java/79.md
docs/java/79.md
+46
-46
docs/java/80.md
docs/java/80.md
+11
-11
docs/java/81.md
docs/java/81.md
+7
-7
docs/java/82.md
docs/java/82.md
+14
-14
docs/java/83.md
docs/java/83.md
+31
-31
docs/java/84.md
docs/java/84.md
+3
-3
docs/java/85.md
docs/java/85.md
+25
-25
docs/java/87.md
docs/java/87.md
+1
-1
docs/java/88.md
docs/java/88.md
+7
-7
docs/java/89.md
docs/java/89.md
+7
-7
docs/java/9.md
docs/java/9.md
+1
-1
docs/java/90.md
docs/java/90.md
+8
-8
docs/java/93.md
docs/java/93.md
+20
-20
docs/java/94.md
docs/java/94.md
+6
-6
docs/java/96.md
docs/java/96.md
+1
-1
未找到文件。
docs/java/101.md
浏览文件 @
63fc36e3
...
...
@@ -139,7 +139,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Available
bytes
at
the
beginning:
39
...
...
@@ -193,7 +193,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Input
Stream
after
skipping
5
bytes:
...
...
docs/java/102.md
浏览文件 @
63fc36e3
...
...
@@ -30,7 +30,7 @@ FileOutputStream output = new FileOutputStream(String path);
在这里,我们创建了一个输出流,该输出流将链接到
`路径`
指定的文件。
另外,
`
值
`
是可选的布尔参数。 如果将其设置为
`true`
,则新数据将附加到文件中现有数据的末尾。 否则,新数据将覆盖文件中的现有数据。
另外,
`
value
`
是可选的布尔参数。 如果将其设置为
`true`
,则新数据将附加到文件中现有数据的末尾。 否则,新数据将覆盖文件中的现有数据。
**2.使用文件**
的对象
...
...
docs/java/103.md
浏览文件 @
63fc36e3
...
...
@@ -129,7 +129,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Available
bytes
at
the
beginning:
4
...
...
@@ -181,7 +181,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Input
stream
after
skipping
2
bytes:
3
,
4
,
...
...
docs/java/104.md
浏览文件 @
63fc36e3
...
...
@@ -137,7 +137,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Data
using
toByteArray
():
This
is
data
.
...
...
docs/java/105.md
浏览文件 @
63fc36e3
...
...
@@ -172,7 +172,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Dog
Name:
Tyson
...
...
docs/java/106.md
浏览文件 @
63fc36e3
...
...
@@ -168,7 +168,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Dog
Name:
Tyson
...
...
docs/java/107.md
浏览文件 @
63fc36e3
...
...
@@ -157,7 +157,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Available
bytes
at
the
beginning:
39
...
...
@@ -216,7 +216,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Input
stream
after
skipping
5
bytes:
is
a
line
of
text
inside
the
file
.
...
...
docs/java/11.md
浏览文件 @
63fc36e3
...
...
@@ -132,7 +132,7 @@ class IfElse {
}
```
**
Output**
:
**
输出**
:
:
```
java
The
number
is
positive
.
...
...
@@ -211,7 +211,7 @@ class Ladder {
}
```
**
Output**
:
**
输出**
:
:
```
java
The
number
is
0
.
...
...
@@ -272,7 +272,7 @@ class Number {
}
```
**
Output**
:
**
输出**
:
:
```
java
The
largest
number
is
4.5
...
...
docs/java/113.md
浏览文件 @
63fc36e3
...
...
@@ -150,7 +150,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
character
encoding
of
input1:
Cp1252
...
...
docs/java/115.md
浏览文件 @
63fc36e3
...
...
@@ -144,7 +144,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
character
encoding
of
input1:
Cp1252
...
...
docs/java/117.md
浏览文件 @
63fc36e3
...
...
@@ -159,7 +159,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Data
after
skipping
5
characters:
...
...
docs/java/119.md
浏览文件 @
63fc36e3
...
...
@@ -128,7 +128,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
data:
This
is
the
text
read
from
the
StringReader
...
...
docs/java/12.md
浏览文件 @
63fc36e3
...
...
@@ -173,7 +173,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
operator
(
either
+,
-,
*
or
/):
*
...
...
docs/java/120.md
浏览文件 @
63fc36e3
...
...
@@ -134,7 +134,7 @@ public class Main {
}
```
**
Output**
**
输出**
:
```
java
StringBuffer:
This
is
the
original
data
...
...
docs/java/123.md
浏览文件 @
63fc36e3
...
...
@@ -125,7 +125,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Enter
an
integer:
...
...
@@ -158,7 +158,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Enter
double
value:
33.33
...
...
@@ -190,7 +190,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Enter
your
name:
Jonny
Walker
...
...
@@ -226,7 +226,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Enter
your
name:
Jonny
Walker
...
...
@@ -279,7 +279,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Enter
a
big
integer:
987654321
...
...
docs/java/124.md
浏览文件 @
63fc36e3
...
...
@@ -79,7 +79,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
double
value:
10.99
...
...
@@ -120,7 +120,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
integer
value
is:
10
...
...
@@ -153,7 +153,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
string
value
is:
10
...
...
docs/java/125.md
浏览文件 @
63fc36e3
...
...
@@ -95,7 +95,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
5
,
6
]
...
...
docs/java/126.md
浏览文件 @
63fc36e3
...
...
@@ -155,7 +155,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Value
of
Pi
=
3.1415
...
...
@@ -231,7 +231,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Lambda
reversed
=
adbmaL
...
...
@@ -297,7 +297,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Lambda
reversed
=
adbmaL
...
...
@@ -361,7 +361,7 @@ public class StreamMain {
}
```
**
Output**
:
**
输出**
:
:
```
java
Places
from
Nepal:
...
...
docs/java/128.md
浏览文件 @
63fc36e3
...
...
@@ -248,7 +248,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
File
is
deleted
.
...
...
docs/java/129.md
浏览文件 @
63fc36e3
...
...
@@ -102,7 +102,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
value
of
a:
23
...
...
docs/java/13.md
浏览文件 @
63fc36e3
...
...
@@ -112,7 +112,7 @@ class Number {
}
```
**
Output**
:
**
输出**
:
:
```
java
Sum
=
500500
...
...
docs/java/14.md
浏览文件 @
63fc36e3
...
...
@@ -58,7 +58,7 @@ class AssignmentOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
a
...
...
@@ -123,7 +123,7 @@ class EnhancedForLoop {
}
```
**
Output**
:
**
输出**
:
:
```
java
Sum
=
19
...
...
docs/java/15.md
浏览文件 @
63fc36e3
...
...
@@ -114,7 +114,7 @@ class AssignmentOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
Sum
=
5050
...
...
@@ -204,7 +204,7 @@ class Sum {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
a
number:
2.5
...
...
docs/java/16.md
浏览文件 @
63fc36e3
...
...
@@ -107,7 +107,7 @@ class UserInputSum {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
a
number:
3.2
...
...
@@ -205,7 +205,7 @@ class LabeledBreak {
}
```
**
Output**
:
**
输出**
:
:
```
java
i
=
1
;
j
=
1
...
...
@@ -245,7 +245,7 @@ class LabeledBreak {
}
```
**
Output**
:
**
输出**
:
:
```
java
i
=
1
;
j
=
1
...
...
docs/java/17.md
浏览文件 @
63fc36e3
...
...
@@ -107,7 +107,7 @@ class AssignmentOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
a
number:
2.2
...
...
@@ -181,7 +181,7 @@ class LabeledContinue {
}
```
**
Output**
:
**
输出**
:
:
```
java
i
=
1
;
j
=
1
...
...
docs/java/19.md
浏览文件 @
63fc36e3
...
...
@@ -126,7 +126,7 @@ class ArrayExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
0
...
...
@@ -177,7 +177,7 @@ class ArrayExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
Element
at
index
0
:
12
...
...
@@ -212,7 +212,7 @@ class ArrayExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
Element
at
index
0
:
34
...
...
@@ -252,7 +252,7 @@ class SumAverage {
}
```
**
Output**
:
**
输出**
:
:
```
java
Sum
=
36
...
...
docs/java/20.md
浏览文件 @
63fc36e3
...
...
@@ -108,7 +108,7 @@ class MultidimensionalArray {
}
```
**
Output**
:
**
输出**
:
:
```
java
1
...
...
@@ -146,7 +146,7 @@ class MultidimensionalArray {
}
```
**
Output**
:
**
输出**
:
:
```
java
1
...
...
@@ -217,7 +217,7 @@ class ThreeArray {
}
```
**
Output**
:
**
输出**
:
:
```
java
1
...
...
docs/java/204.md
浏览文件 @
63fc36e3
# Java 程序将
地图
(HashMap)转换为列表
# Java 程序将
映射
(HashMap)转换为列表
> 原文: [https://www.programiz.com/java-programming/examples/convert-map-list](https://www.programiz.com/java-programming/examples/convert-map-list)
#### 在该程序中,您将学习将 Java 映射转换为列表的各种技巧。
## 示例 1:将
地图
转换为列表
## 示例 1:将
映射
转换为列表
```
java
import
java.util.*
;
...
...
@@ -43,7 +43,7 @@ Value List: [a, b, c, d, e]
* * *
## 示例 2:使用流将
地图
转换为列表
## 示例 2:使用流将
映射
转换为列表
```
java
import
java.util.*
;
...
...
@@ -72,6 +72,6 @@ public class MapList {
该程序的输出与示例 1 相同。
在上面的程序中,我们没有使用
`ArrayList`
构造器,而是使用
`stream()`
将
地图
转换为列表。
在上面的程序中,我们没有使用
`ArrayList`
构造器,而是使用
`stream()`
将
映射
转换为列表。
我们已经通过传递
`Collectors`
'
`toList()`
作为参数的
`collect()`
方法将键和值转换为流,并将其转换为列表。
\ No newline at end of file
docs/java/21.md
浏览文件 @
63fc36e3
...
...
@@ -54,7 +54,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
-
1
,
2
,
3
,
4
,
5
,
6
...
...
@@ -92,7 +92,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
[
1
,
2
,
3
,
4
,
5
,
6
]
...
...
@@ -158,7 +158,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
n2
=
[
2
,
3
,
12
,
4
,
12
,
-
2
]
...
...
@@ -250,7 +250,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
[[
1
,
2
,
3
,
4
],
[
5
,
6
],
[
0
,
2
,
42
,
-
4
,
5
]]
...
...
@@ -297,7 +297,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
[[
1
,
2
,
3
,
4
],
[
5
,
6
],
[
0
,
2
,
42
,
-
4
,
5
]]
...
...
docs/java/215.md
浏览文件 @
63fc36e3
...
...
@@ -4,7 +4,7 @@
#### 在此程序中,您将学习按 Java 中的值对给定的映射进行排序。
## 示例:按值对
地图
排序
## 示例:按值对
映射
排序
```
java
import
java.util.*
;
...
...
@@ -57,12 +57,12 @@ Key: United States Value: Washington
在上述程序中,我们将
`LinkedHashMap`
和国家/地区及其各自的首都存储在变量
`大写字母`
中。
我们有一种方法
`sortMap()`
,它采用链接的哈希
图并返回排序后的链接的哈希图
。
我们有一种方法
`sortMap()`
,它采用链接的哈希
映射并返回排序后的链接的哈希映射
。
在该方法内部,我们将哈希
图
转换为列表
`capitalList`
。 然后,我们使用
`sort()`
方法获取一个列表和一个比较器。
在该方法内部,我们将哈希
映射
转换为列表
`capitalList`
。 然后,我们使用
`sort()`
方法获取一个列表和一个比较器。
在我们的情况下,比较器是 lambda,它对
`(o1, o2) -> o1.getValue().compareTo(o2.getValue())`
o1 和
`o2`
列表中两个项目的值进行比较。
操作后,我们得到排序列表
`capitalList`
。 然后,我们只需将列表转换为
`LinkedHashMap`
结果并返回即可。
回到
`main()`
方法,我们遍历地图中的每个项目并打印其键和值。
\ No newline at end of file
回到
`main()`
方法,我们遍历映射中的每个项目并打印其键和值。
\ No newline at end of file
docs/java/23.md
浏览文件 @
63fc36e3
...
...
@@ -53,7 +53,7 @@ class ClassName {
}
```
For example,
例如:
```
java
class
Lamp
{
...
...
docs/java/24.md
浏览文件 @
63fc36e3
...
...
@@ -153,7 +153,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
About
to
encounter
a
method
.
...
...
@@ -192,7 +192,7 @@ class Output {
}
```
**
Output**
:
**
输出**
:
:
```
java
About
to
encounter
a
method
.
...
...
@@ -235,7 +235,7 @@ class SquareMain {
}
```
**
Output**
:
**
输出**
:
:
```
java
Squared
value
of
10
is:
100
...
...
@@ -279,7 +279,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Squared
value
of
3
is:
9
...
...
@@ -332,7 +332,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
10
+
20
=
30
...
...
@@ -366,7 +366,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Square
of
1
is:
1
...
...
docs/java/25.md
浏览文件 @
63fc36e3
...
...
@@ -114,7 +114,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Object
created
and
i
=
5
...
...
@@ -149,7 +149,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Domain
name
=
programiz
.
com
...
...
@@ -195,7 +195,7 @@ class DefaultConstructor {
}
```
**
Output**
:
**
输出**
:
:
```
java
a
=
0
...
...
@@ -230,7 +230,7 @@ class DefaultConstructor {
}
```
**
Output**
:
**
输出**
:
:
```
java
a
=
0
...
...
@@ -274,7 +274,7 @@ class Vehicle {
}
```
**
Output**
:
**
输出**
:
:
```
java
2
wheeler
vehicle
created
.
...
...
@@ -326,7 +326,7 @@ class Company {
}
```
**
Output**
:
**
输出**
:
:
```
java
default
...
...
docs/java/26.md
浏览文件 @
63fc36e3
...
...
@@ -90,7 +90,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
First
String:
Hello
!
...
...
@@ -126,7 +126,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
First
String:
Hello
!
...
...
@@ -160,7 +160,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Strings
first
and
second
are
equal:
true
...
...
@@ -194,7 +194,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
string
is:
Hello
!
World
...
...
@@ -230,7 +230,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Using
the
subString
():
World
...
...
docs/java/27.md
浏览文件 @
63fc36e3
...
...
@@ -155,7 +155,7 @@ class Dog extends Animal {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
an
animal
...
...
@@ -203,7 +203,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
an
animal
.
...
...
docs/java/28.md
浏览文件 @
63fc36e3
...
...
@@ -78,7 +78,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
mc
.
age
=
0
...
...
@@ -103,7 +103,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
obj
.
age
=
8
...
...
@@ -165,7 +165,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
obj
.
name
:
Toshiba
...
...
@@ -232,7 +232,7 @@ class Complex {
}
```
**
Output**
:
**
输出**
:
:
```
java
2
+
3
i
...
...
@@ -301,7 +301,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Before
passing
this
to
addTwo
()
method:
...
...
docs/java/31.md
浏览文件 @
63fc36e3
...
...
@@ -70,7 +70,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Is
d1
is
an
instance
of
Dog:
true
...
...
@@ -110,7 +110,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Is
d1
an
instance
of
the
Object
class
:
true
...
...
@@ -151,7 +151,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
an
animal
.
...
...
@@ -224,7 +224,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
a
dog
...
...
@@ -255,7 +255,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Is
d1
an
instance
of
Animal:
true
...
...
docs/java/33.md
浏览文件 @
63fc36e3
...
...
@@ -160,7 +160,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
I
can
eat
...
...
@@ -226,7 +226,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
I
eat
dog
food
...
...
@@ -282,7 +282,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
I
am
an
Animal
...
...
docs/java/34.md
浏览文件 @
63fc36e3
...
...
@@ -92,7 +92,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
an
animal
.
...
...
@@ -144,7 +144,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
a
dog
.
...
...
docs/java/35.md
浏览文件 @
63fc36e3
...
...
@@ -109,7 +109,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
I
am
a
dog
...
...
@@ -266,7 +266,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Type:
Animal
...
...
docs/java/36.md
浏览文件 @
63fc36e3
...
...
@@ -130,7 +130,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Bark
bark
.
...
...
@@ -211,7 +211,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Bark
bark
...
...
docs/java/37.md
浏览文件 @
63fc36e3
...
...
@@ -192,7 +192,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
area
of
the
rectangle
is
30
...
...
@@ -263,7 +263,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Area:
2.9047375096555625
...
...
docs/java/38.md
浏览文件 @
63fc36e3
...
...
@@ -137,7 +137,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
**********
...
...
@@ -179,7 +179,7 @@ int b = 6;
int
sum
=
a
+
b
;
// Output = 11
```
And when we use
`+`
operator with strings, it performs string concatenation.
For example,
And when we use
`+`
operator with strings, it performs string concatenation.
例如:
```
java
String
firstName
=
"abc "
;
...
...
@@ -237,7 +237,7 @@ class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
an
animal
.
...
...
docs/java/39.md
浏览文件 @
63fc36e3
...
...
@@ -108,7 +108,7 @@ class Teacher extends Person {
}
```
**
Output**
**
输出**
:
```
java
I
am
a
teacher
...
...
docs/java/41.md
浏览文件 @
63fc36e3
...
...
@@ -174,7 +174,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Engine
Type
for
8
WD
=
Bigger
...
...
@@ -239,7 +239,7 @@ public class Main {
}
```
**
Output**
:
**
输出**
:
:
```
java
Total
Ports
=
3
...
...
docs/java/42.md
浏览文件 @
63fc36e3
...
...
@@ -138,7 +138,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Main
.
java
:
28
:
error:
cannot
find
symbol
...
...
@@ -178,7 +178,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Main
.
java
:
1
:
error:
modifier
static
not
allowed
here
...
...
docs/java/43.md
浏览文件 @
63fc36e3
...
...
@@ -105,7 +105,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Inside
an
anonymous
class
.
...
...
docs/java/45.md
浏览文件 @
63fc36e3
...
...
@@ -94,7 +94,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
I
ordered
a
medium
size
pizza
.
...
...
@@ -163,7 +163,7 @@ enum Size{
}
```
**
Output**
**
输出**
:
```
java
The
size
of
the
pizza
is
small
...
...
docs/java/47.md
浏览文件 @
63fc36e3
...
...
@@ -66,7 +66,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
size
is
medium
.
...
...
docs/java/48.md
浏览文件 @
63fc36e3
...
...
@@ -238,7 +238,7 @@ class ReflectionDemo {
}
```
**
Output**
**
输出**
:
```
java
type:
labrador
...
...
@@ -285,7 +285,7 @@ public static void main(String[] args) {
}
```
**
Output**
**
输出**
:
```
java
color:
brown
...
...
@@ -359,7 +359,7 @@ class ReflectionDemo {
}
```
**
Output**
**
输出**
:
```
java
Method
Name:
display
...
...
@@ -437,7 +437,7 @@ class ReflectionDemo {
}
```
**
Output**
**
输出**
:
```
java
Constructor
Name:
Dog
...
...
docs/java/5.md
浏览文件 @
63fc36e3
...
...
@@ -143,7 +143,7 @@ class ByteExample {
}
```
**
Output**
:
**
输出**
:
:
* * *
...
...
@@ -194,7 +194,7 @@ class IntExample {
}
```
**
Output**
:
**
输出**
:
:
* * *
...
...
@@ -219,7 +219,7 @@ class LongExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
-
42332200000
...
...
@@ -246,7 +246,7 @@ class DoubleExample {
}
```
**
Output**
:
**
输出**
:
:
* * *
...
...
@@ -271,7 +271,7 @@ class FloatExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
-
42.3
...
...
@@ -298,7 +298,7 @@ class CharExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
Q
...
...
@@ -322,7 +322,7 @@ class CharExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
9
...
...
@@ -417,7 +417,7 @@ boolean flag = false;
}
```
**
Output**
:
**
输出**
:
:
* * *
...
...
@@ -449,7 +449,7 @@ class DoubleExample {
}
```
**
Output**
:
**
输出**
:
:
```
java
g
...
...
docs/java/51.md
浏览文件 @
63fc36e3
...
...
@@ -102,7 +102,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
IndexOutOfBoundsException
=>
Index
10
out
of
bounds
for
length
10
...
...
@@ -159,7 +159,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArithmeticException
=>
/
by
zero
...
...
docs/java/52.md
浏览文件 @
63fc36e3
...
...
@@ -143,7 +143,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Exception
in
thread
"main"
java
.
lang
.
ArithmeticException
:
Trying
to
divide
by
0
...
...
@@ -178,7 +178,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
File
not
found
...
...
docs/java/53.md
浏览文件 @
63fc36e3
...
...
@@ -73,7 +73,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
/
by
zero
...
...
@@ -110,7 +110,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
/
by
zero
...
...
@@ -139,7 +139,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Main
.
java
:
6
:
error:
Alternatives
in
a
multi
-
catch
statement
cannot
be
related
by
subclassing
...
...
docs/java/55.md
浏览文件 @
63fc36e3
...
...
@@ -92,14 +92,14 @@ I am a dog.
```
如果只有一个元素,则习惯上将该元素命名为
`
值
`
。
如果只有一个元素,则习惯上将该元素命名为
`
value
`
。
```
java
@AnnotationName
(
value
=
"elementValue"
)
```
在这种情况下,也可以排除元素名称。 元素名称默认为
`
值
`
。
在这种情况下,也可以排除元素名称。 元素名称默认为
`
value
`
。
```
java
@AnnotationName
(
"elementValue"
)
...
...
@@ -151,7 +151,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Word
list
=>
[
programiz
]
...
...
docs/java/56.md
浏览文件 @
63fc36e3
...
...
@@ -157,7 +157,7 @@ I am a dog
@SuppressWarnings
({
"warningCategory1"
,
"warningCategory2"
})
```
For example,
例如:
```
java
@SuppressWarnings
({
"deprecated"
,
"unchecked"
})
...
...
@@ -190,7 +190,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Deprecated
method
...
...
@@ -241,7 +241,7 @@ Type safety: A generic array of List<String> is created for a varargs
parameter
```
**
Output**
**
输出**
:
```
java
Note:
Main
.
java
uses
unchecked
or
unsafe
operations
.
...
...
@@ -354,7 +354,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Test
method
1
...
...
@@ -382,7 +382,7 @@ Test method 1
*
**`RetentionPolicy.CLASS`**
- 注释在编译时可供编译器使用,但被 Java 虚拟机(JVM)忽略。
*
**`RetentionPolicy.RUNTIME`**
- 注释可用于 JVM。
For example,
例如:
```
java
@Retention
(
RetentionPolicy
.
RUNTIME
)
...
...
@@ -395,7 +395,7 @@ public @interface MyCustomAnnotation{ ... }
默认情况下,自定义注解不包含在
[
官方 Java 文档
](
https://www.oracle.com/technetwork/articles/java/index-137868.html
)
中。 为了将注释包含在 Javadoc 文档中,我们使用
`@Documented`
注解。
For example,
例如:
```
java
@Documented
...
...
@@ -426,7 +426,7 @@ public @interface MyCustomAnnotation{ ... }
|
`ElementType.PARAMETER`
| 参数 |
|
`ElementType.TYPE`
| 任何班级要素 |
For example,
例如:
```
java
@Target
(
ElementType
.
METHOD
)
...
...
@@ -449,7 +449,7 @@ public @interface MyCustomAnnotation{ ... }
@Inherited
```
For example,
例如:
```
java
@Inherited
...
...
@@ -474,7 +474,7 @@ public @interface University {
}
```
`@Repeatable`
注解中定义的值是容器注解。 容器注释具有上述可重复注释的数组类型的变量
`
值
`
。 在此,
`Universities`
是包含注释的类型。
`@Repeatable`
注解中定义的值是容器注解。 容器注释具有上述可重复注释的数组类型的变量
`
value
`
。 在此,
`Universities`
是包含注释的类型。
```
java
public
@interface
Universities
{
...
...
docs/java/58.md
浏览文件 @
63fc36e3
...
...
@@ -92,7 +92,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Exception
in
thread
"main"
java
.
lang
.
AssertionError
:
There
are
only
2
weekends
in
a
week
...
...
docs/java/6.md
浏览文件 @
63fc36e3
...
...
@@ -96,7 +96,7 @@ class ArithmeticOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
number1
+
number2
=
16.0
...
...
@@ -137,7 +137,7 @@ class ArithmeticOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
Talk
is
cheap
.
Show
me
the
code
.
-
Linus
Torvalds
...
...
@@ -185,7 +185,7 @@ class UnaryOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
+
number
=
5.2
...
...
@@ -227,7 +227,7 @@ class UnaryOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
5.2
...
...
@@ -298,7 +298,7 @@ class RelationalOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
number2
is
greater
than
number1
.
...
...
@@ -337,7 +337,7 @@ class instanceofOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
Is
test
an
object
of
String
?
true
...
...
@@ -381,7 +381,7 @@ class LogicalOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
true
...
...
@@ -423,7 +423,7 @@ class ConditionalOperator {
}
```
**
Output**
:
**
输出**
:
:
```
java
Leap
year
...
...
docs/java/60.md
浏览文件 @
63fc36e3
...
...
@@ -58,7 +58,7 @@ Java 不提供`Collection`接口的直接实现,但提供其`List`,`Set`和`
## Java `Map`接口
在 Java 中,
`Map`
接口允许将元素存储在
**键/值**
对中。 键是唯一的名称,可用于访问
地图
中的特定元素。 并且,每个键都有一个与其关联的值。 要了解更多信息,请访问
[
Java Map Interface
](
/java-programming/map
"Java Map Interface"
)
在 Java 中,
`Map`
接口允许将元素存储在
**键/值**
对中。 键是唯一的名称,可用于访问
映射
中的特定元素。 并且,每个键都有一个与其关联的值。 要了解更多信息,请访问
[
Java Map Interface
](
/java-programming/map
"Java Map Interface"
)
* * *
...
...
docs/java/62.md
浏览文件 @
63fc36e3
...
...
@@ -135,7 +135,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
List:
[
1
,
2
,
3
]
...
...
docs/java/63.md
浏览文件 @
63fc36e3
...
...
@@ -28,7 +28,7 @@
ArrayList
<
Type
>
arrayList
=
new
ArrayList
<>();
```
在此,
`
类型
`
表示数组列表的类型。 例如,
在此,
`
Type
`
表示数组列表的类型。 例如,
```
java
// create Integer type arraylist
...
...
@@ -110,7 +110,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -141,7 +141,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Mammals:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -175,7 +175,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Cat
,
Cow
,
Dog
]
...
...
@@ -220,7 +220,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -258,7 +258,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
Dog
,
Cat
,
Horse
,
Zebra
,
...
...
@@ -294,7 +294,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -330,7 +330,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Initial
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -364,7 +364,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Initial
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -397,7 +397,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Initial
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -435,7 +435,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Cow
,
Cat
,
Dog
]
...
...
@@ -469,7 +469,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Cow
,
Cat
,
Dog
]
...
...
@@ -504,7 +504,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -542,7 +542,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Unsorted
ArrayList:
[
Horse
,
Zebra
,
Dog
,
Cat
]
...
...
@@ -583,7 +583,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -622,7 +622,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Array:
Dog
,
Cat
,
Horse
...
...
@@ -659,7 +659,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
Dog
,
Cat
,
Horse
]
...
...
docs/java/64.md
浏览文件 @
63fc36e3
...
...
@@ -30,7 +30,7 @@
Vector
<
Type
>
vector
=
new
Vector
<>();
```
在此,
`
类型
`
表示链接列表的类型。 例如,
在此,
`
Type
`
表示链接列表的类型。 例如,
```
java
// create Integer type linked list
...
...
@@ -95,7 +95,7 @@ New Vector: [Crocodile, Dog, Horse, Cat]
*
`get(index)`
-返回由索引指定的元素
*
`iterator()`
-返回迭代器对象以顺序访问
`Vector`
元素
For example,
例如:
```
java
import
java.util.Iterator
;
...
...
@@ -123,7 +123,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Element
at
index
2
:
Cat
...
...
@@ -138,7 +138,7 @@ Vector: Dog, Horse, Cat,
*
`removeAll()`
-删除所有元素
*
`clear()`
-删除所有元素。 比
`removeAll()`
更有效
For example,
例如:
```
java
import
java.util.Vector
;
...
...
@@ -164,7 +164,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Initial
Vector:
[
Dog
,
Horse
,
Cat
]
...
...
docs/java/65.md
浏览文件 @
63fc36e3
...
...
@@ -101,7 +101,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Initial
Stack:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -135,7 +135,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Stack:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -168,7 +168,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Stack:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -201,7 +201,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Stack:
[
Dog
,
Horse
,
Cat
]
...
...
docs/java/67.md
浏览文件 @
63fc36e3
...
...
@@ -150,7 +150,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Queue:
[
1
,
5
,
2
]
...
...
docs/java/68.md
浏览文件 @
63fc36e3
...
...
@@ -105,7 +105,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
PriorityQueue:
[
1
,
4
,
2
]
...
...
@@ -119,7 +119,7 @@ Accessed Element: 1
*
`remove()`
-从队列中删除指定的元素
*
`poll()`
-返回并删除队列的开头
For example,
例如:
```
java
import
java.util.PriorityQueue
;
...
...
@@ -145,7 +145,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
PriorityQueue:
[
1
,
4
,
2
]
...
...
@@ -183,7 +183,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
PriorityQueue
using
iterator
():
1
,
4
,
2
,
...
...
@@ -241,7 +241,7 @@ class CustomComparator implements Comparator<Integer> {
}
```
**
Output**
**
输出**
:
```
java
PriorityQueue:
[
4
,
3
,
1
,
2
]
...
...
docs/java/7.md
浏览文件 @
63fc36e3
...
...
@@ -69,7 +69,7 @@ class Output {
}
```
**
Output**
:
**
输出**
:
:
```
java
1
\
.
println
...
...
@@ -120,7 +120,7 @@ class PrintVariables {
}
```
**
Output**
:
**
输出**
:
:
```
java
I
am
awesome
.
...
...
@@ -189,7 +189,7 @@ class Input {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
an
integer:
23
...
...
@@ -232,7 +232,7 @@ class Input {
}
```
**
Output**
:
**
输出**
:
:
```
java
Enter
float
:
2.343
...
...
docs/java/70.md
浏览文件 @
63fc36e3
# Java
LinkedList
# Java
`LinkedList`
> 原文: [https://www.programiz.com/java-programming/linkedlist](https://www.programiz.com/java-programming/linkedlist)
#### 在本教程中,我们将通过许多示例详细了解
LinkedList
类。
#### 在本教程中,我们将通过许多示例详细了解
`LinkedList`
类。
Java 集合框架的
`LinkedList`
类提供了链表数据结构的功能。
* * *
## 由
LinkedList
实现的接口
## 由
`LinkedList`
实现的接口
*
[
Java `List`接口
](
/java-programming/list
"Java List interface"
)
*
[
Java `Queue`接口
](
/java-programming/queue
"Java Queue interface"
)
*
[
Java
双端`Que
ue`接口
](
/java-programming/deque
"Java Deque interface"
)
*
[
Java
`Deq
ue`接口
](
/java-programming/deque
"Java Deque interface"
)
![
Interfaces implemented by the Linked List
](
img/624e7c41b2bc25dac6c0c431b4264c0f.png
)
* * *
## Java 中的
LinkedList
实现
## Java 中的
`LinkedList`
实现
Java
`LinkedList`
类提供了一个双向链表实现。
...
...
@@ -42,7 +42,7 @@ Java `LinkedList`类提供了一个双向链表实现。
* * *
## 创建一个
LinkedList
## 创建一个
`LinkedList`
这是我们如何用 Java 创建链接列表的方法:
...
...
@@ -50,7 +50,7 @@ Java `LinkedList`类提供了一个双向链表实现。
LinkedList
<
Type
>
linkedList
=
new
LinkedList
<>();
```
在此,
`
类型
`
表示链接列表的类型。 例如,
在此,
`
Type
`
表示链接列表的类型。 例如,
```
java
// create Integer type linked list
...
...
@@ -62,7 +62,7 @@ LinkedList<String> linkedList = new LinkedList<>();
* * *
## 使用接口创建
LinkedList
## 使用接口创建
`LinkedList`
让我们举个例子。
...
...
@@ -85,15 +85,15 @@ Deque<String> animals3 = new LinkedList<>();
* * *
##
LinkedList
的方法
##
`LinkedList`
的方法
`LinkedList`
提供了多种方法,可让我们在链表中执行不同的操作。
* * *
### 将元素添加到
LinkedList
### 将元素添加到
`LinkedList`
**1.添加元素:
u**
**使用 add()
方法**
**1.添加元素:
使用`add()`
方法**
要将元素(节点)添加到链表的末尾,我们使用
`add()`
方法。 例如,
...
...
@@ -142,7 +142,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -176,7 +176,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Mammals:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -185,7 +185,7 @@ Animals: [Crocodile, Dog, Cat, Horse]
* * *
**4.添加元素:使用
listIterator()
方法**
**4.添加元素:使用
`listIterator()`
方法**
我们还可以使用
`listsIterator()`
方法将元素添加到链接列表中。 要使用它,我们必须导入
`java.util.ListIterator`
包。 例如,
...
...
@@ -207,7 +207,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Cat
]
...
...
@@ -215,9 +215,9 @@ LinkedList: [Dog, Cat]
* * *
### 访问
LinkedList
元素
### 访问
`LinkedList`
元素
**1.访问元素:使用
get()
方法**
**1.访问元素:使用
`get()`
方法**
要访问链表中的元素,我们可以使用
`get()`
方法。 例如,
...
...
@@ -241,7 +241,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -250,7 +250,7 @@ Element at index 1: Horse
* * *
**2.访问元素:使用
iterator()
方法**
**2.访问元素:使用
`iterator()`
方法**
要遍历链接列表的元素,我们可以使用
`iterator()`
方法。 我们必须导入
`java.util.Iterator`
包才能使用此方法。 例如,
...
...
@@ -279,7 +279,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
Dog
,
Cat
,
Horse
,
...
...
@@ -290,11 +290,11 @@ LinkedList: Dog, Cat, Horse,
*
`hasNext()`
-如果存在下一个元素,则返回
`true`
*
`next()`
-返回下一个元素
要了解有关
`Iterator`
的更多信息,请访问 Java
Iterator Interface
。
要了解有关
`Iterator`
的更多信息,请访问 Java
`Iterator`
接口
。
* * *
**3.访问元素:使用
listIterator()
方法**
**3.访问元素:使用
`listIterator()`
方法**
我们还可以使用
`listIterator()`
方法来迭代链接列表的元素。 要使用此方法,我们必须导入
`java.util.ListIterator`
包。
...
...
@@ -333,7 +333,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
Dog
,
Horse
,
Cat
,
...
...
@@ -347,13 +347,13 @@ Here,
*
`hasPrevious()`
-如果先前存在元素,则返回
`true`
*
`previous()`
-返回上一个元素
要了解有关
`ListIterator`
的更多信息,请访问 Java
ListIterator
接口。
要了解有关
`ListIterator`
的更多信息,请访问 Java
`ListIterator`
接口。
* * *
### 搜索
LinkedList
元素
### 搜索
`LinkedList`
元素
**1.搜索元素:使用
contains()
方法**
**1.搜索元素:使用
`contains()`
方法**
要检查链接列表是否包含特定元素,我们使用
`contains()`
方法。 例如,
...
...
@@ -378,7 +378,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -387,7 +387,7 @@ Dog is in LinkedList.
* * *
**2.搜索元素:使用
indexOf()
方法**
**2.搜索元素:使用
`indexOf()`
方法**
*
`indexOf()`
-返回元素首次出现的索引
*
`lastIndexOf()`
-返回元素最后一次出现的索引
...
...
@@ -419,7 +419,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
,
Dog
]
...
...
@@ -431,9 +431,9 @@ Last Occurrence of Dog: 3
* * *
### 更改
LinkedList
元素
### 更改
`LinkedList`
元素
**1.更改元素:使用
set()
方法**
**1.更改元素:使用
`set()`
方法**
要更改链接列表的元素,可以使用
`set()`
方法。 例如,
...
...
@@ -458,7 +458,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
,
Dog
]
...
...
@@ -467,7 +467,7 @@ New LinkedList: [Dog, Horse, Cat, Zebra]
* * *
**2.更改元素:使用
listIterator()
方法**
**2.更改元素:使用
`listIterator()`
方法**
我们还可以使用
`listIterator()`
方法更改链接列表中的元素。 例如,
...
...
@@ -496,7 +496,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -505,9 +505,9 @@ New LinkedList: [Cow, Cat, Horse]
* * *
### 删除
LinkedList
元素
### 删除
`LinkedList`
元素
**1.删除元素:使用
remove()
方法**
**1.删除元素:使用
`remove()`
方法**
要从链表中删除一个元素,我们可以使用
`remove()`
方法。 例如,
...
...
@@ -534,7 +534,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList
:
[
Dog
,
Horse
,
Cat
,
Zebra
]
...
...
@@ -544,7 +544,7 @@ New LinkedList: [Dog, Cat, Zebra]
* * *
**2.删除元素:使用
listIterator()
方法**
**2.删除元素:使用
`listIterator()`
方法**
我们还可以使用
`listsIterator()`
方法从链接列表中删除元素。 例如,
...
...
@@ -573,7 +573,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -582,7 +582,7 @@ New LinkedList: [Cat, Horse]
* * *
**3.删除元素:使用
clear()
方法**
**3.删除元素:使用
`clear()`
方法**
要从链接列表中删除所有元素,我们使用
`clear()`
方法。 例如,
...
...
@@ -606,7 +606,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -617,7 +617,7 @@ New LinkedList: []
* * *
**4.删除元素:使用
removeIf()
方法**
**4.删除元素:使用
`removeIf()`
方法**
如果元素满足特定条件,我们也可以从链表中删除它们。 为此,我们使用
`removeIf`
`()`
方法。 例如,
...
...
@@ -647,7 +647,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
2
,
3
,
4
,
5
]
...
...
@@ -658,18 +658,18 @@ New LinkedList: [4, 5]
* * *
##
LinkedList
作为双端队列和队列
##
`LinkedList`
作为双端队列和队列
由于
`LinkedList`
类还实现了
`Queue`
和
`Deque`
接口,因此它也可以实现这些接口的方法。 以下是一些常用方法:
* * *
###
addFirst()和 addLast()
方法
###
`addFirst()`和`addLast()`
方法
*
`addFirst()`
-在链接列表的开头添加指定的元素
*
`addLast()`
-将指定的元素添加到链接列表的末尾
For example,
例如:
```
java
import
java.util.LinkedList
;
...
...
@@ -692,7 +692,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Cat
,
Dog
,
Cow
]
...
...
@@ -701,12 +701,12 @@ New LinkedList: [Cat, Dog, Cow, Zebra]
* * *
###
getFirst()和 getLast()
方法
###
`getFirst()`和`getLast()`
方法
*
`getFirst()`
-返回第一个元素
*
`getLast()`
-返回最后一个元素
For example,
例如:
```
java
import
java.util.LinkedList
;
...
...
@@ -733,7 +733,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -743,12 +743,12 @@ Last Element: Cat
* * *
###
removeFirst()和 removeLast()
方法
###
`removeFirst()`和`removeLast()`
方法
*
`removeFirst()`
-删除第一个元素
*
`removeLast()`
-删除最后一个元素
For example,
例如:
```
java
import
java.util.LinkedList
;
...
...
@@ -777,7 +777,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -788,7 +788,7 @@ New LinkedList: [Horse]
* * *
###
peek()
方法
###
`peek()`
方法
`peek()`
方法返回链表的第一个元素(头)。 例如,
...
...
@@ -814,7 +814,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -824,7 +824,7 @@ New LinkedList: [Dog, Horse, Cat]
* * *
###
poll()
方法
###
`poll()`
方法
`poll()`
方法返回并从链表中删除第一个元素。 例如,
...
...
@@ -850,7 +850,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
,
Cat
]
...
...
@@ -858,7 +858,7 @@ Removed Element: Dog
New
LinkedList:
[
Horse
,
Cat
]
```
###
offer()
方法
###
`offer()`
方法
`offer()`
方法将指定的元素添加到链接列表的末尾。 例如,
...
...
@@ -882,7 +882,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Dog
,
Horse
]
...
...
@@ -891,9 +891,9 @@ New LinkedList: [Dog, Horse, Cat]
* * *
## 通过
LinkedList
迭代
## 通过
`LinkedList`
迭代
**1.使用
forEach
循环**
**1.使用
`forEach`
循环**
```
java
import
java.util.LinkedList
;
...
...
@@ -917,7 +917,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Cow
,
Cat
,
Dog
]
...
...
@@ -927,7 +927,7 @@ Cow, Cat, Dog,
* * *
**2.使用
for
循环**
**2.使用
`for`
循环**
```
java
import
java.util.LinkedList
;
...
...
@@ -951,7 +951,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Cow
,
Cat
,
Dog
]
...
...
@@ -963,9 +963,9 @@ Cow, Cat, Dog,
* * *
**3.使用
iterator()
方法**
**3.使用
`iterator()`
方法**
我们可以使用
iterator()
方法访问链表的元素。 为了使用此方法,我们必须导入
`java.util.Iterator`
包。
我们可以使用
`iterator()`
方法访问链表的元素。 为了使用此方法,我们必须导入
`java.util.Iterator`
包。
```
java
import
java.util.LinkedList
;
...
...
@@ -991,7 +991,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedList:
[
Cow
,
Cat
,
Dog
]
...
...
@@ -1001,7 +1001,7 @@ Cow, Cat, Dog,
* * *
##
LinkedList 与 ArrayList
##
`LinkedList`与`ArrayList`
`LinkedList`
和
`ArrayList`
都实现
`Collections`
框架的
`List`
接口。 但是,它们之间存在一些差异。
...
...
docs/java/71.md
浏览文件 @
63fc36e3
# Java
ArrayDeque
# Java
`ArrayDeque`
> 原文: [https://www.programiz.com/java-programming/arraydeque](https://www.programiz.com/java-programming/arraydeque)
#### 在本教程中,我们将借助示例学习
ArrayDeque
类及其方法。 此外,我们还将学习使用数组双端队列来实现栈。
#### 在本教程中,我们将借助示例学习
`ArrayDeque`
类及其方法。 此外,我们还将学习使用数组双端队列来实现栈。
在 Java 中,我们可以使用
`ArrayDeque`
类使用数组实现队列和双端队列数据结构。
* * *
## 由
ArrayDeque
实现的接口
## 由
`ArrayDeque`
实现的接口
`ArrayDeque`
类实现以下两个接口:
*
[
Java `Queue`接口
](
https://www.programiz.com/java-programming/queue
"Java Queue Interface"
)
*
[
Java
双端`Que
ue`接口
](
https://www.programiz.com/java-programming/deque
"Java Deque Interface"
)
*
[
Java
`Deq
ue`接口
](
https://www.programiz.com/java-programming/deque
"Java Deque Interface"
)
![
ArrayDeque in Java implements two interfaces: Queue and Deque
](
img/1cc34797d46f0e4a509965a6821d7270.png
)
* * *
## 创建
ArrayDeque
## 创建
`ArrayDeque`
为了创建数组双端队列,我们必须导入
`java.util.ArrayDeque`
包。
...
...
@@ -29,7 +29,7 @@
ArrayDeque
<
Type
>
animal
=
new
ArrayDeque
<>();
```
在此,
`
类型
`
表示数组双端队列的类型。 例如,
在此,
`
Type
`
表示数组双端队列的类型。 例如,
```
java
// Creating String type ArrayDeque
...
...
@@ -41,7 +41,7 @@ ArrayDeque<Integer> age = new ArrayDeque<>();
* * *
##
ArrayDeque
方法
##
`ArrayDeque`
方法
`ArrayDeque`
类提供了
`Queue`
和
`Deque`
接口中存在的所有方法的实现。
...
...
@@ -49,7 +49,7 @@ ArrayDeque<Integer> age = new ArrayDeque<>();
### 将元素插入双端队列
**1.使用
add(),addFirst()和 addLast()
添加元素**
**1.使用
`add()`,`addFirst()`和`addLast()`
添加元素**
*
`add()`
-在数组双端队列的末尾插入指定的元素
*
`addFirst()`
-将指定的元素插入数组双端队列的开头
...
...
@@ -85,7 +85,7 @@ class Main {
ArrayDeque:
[
Cat
,
Dog
,
Horse
]
```
**2.使用
offer(),offerFirst()和 offerLast()
插入元素**
**2.使用
`offer()`,`offerFirst()`和`offerLast()`
插入元素**
*
`offer()`
-在数组双端队列的末尾插入指定的元素
*
`offerFirst()`
-将指定的元素插入数组双端队列的开头
...
...
@@ -93,7 +93,7 @@ ArrayDeque: [Cat, Dog, Horse]
**注意:如果成功插入元素,则**
`offer()`
,
`offerFirst()`
和
`offerLast()`
返回
`true`
; 如果数组双端队列已满,则这些方法返回
`false`
。
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -114,7 +114,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Cat
,
Dog
,
Horse
]
...
...
@@ -127,16 +127,16 @@ ArrayDeque: [Cat, Dog, Horse]
* * *
### 访问
ArrayDeque
元素
### 访问
`ArrayDeque`
元素
**1.使用
getFirst()和 getLast()
访问元素**
**1.使用
`getFirst()`和`getLast()`
访问元素**
*
`getFirst()`
-返回数组双端队列的第一个元素
*
`getLast()`
-返回数组双端队列的最后一个元素
**注意**
:如果数组双端队列为空,则
`getFirst()`
和
`getLast()`
抛出
`NoSuchElementException`
。
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -160,7 +160,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -168,13 +168,13 @@ First Element: Dog
Last
Element:
Horse
```
**2.使用
peek(),peekFirst()和 peekLast()
方法访问元素**
**2.使用
`peek()`,`peekFirst()`和`peekLast()`
方法访问元素**
*
`peek()`
-返回数组双端队列的第一个元素
*
`peekFirst()`
-返回数组双端队列的第一个元素(相当于
`peek()`
)
*
`peekLast()`
-返回数组双端队列的最后一个元素
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -202,7 +202,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -215,9 +215,9 @@ Last Element: Horse
* * *
### 删除
ArrayDeque
元素
### 删除
`ArrayDeque`
元素
**1.使用
remove(),removeFirst()和 removeLast()
方法删除元素**
**1.使用
`remove()`,`removeFirst()`和`removeLast()`
方法删除元素**
*
`remove()`
-从数组双端队列的第一个元素中返回并删除一个元素
*
`remove(element)`
-从数组双端队列的头部返回并删除指定的元素
...
...
@@ -226,7 +226,7 @@ Last Element: Horse
**注意**
:如果数组双端队列为空,则
`remove()`
,
`removeFirst()`
和
`removeLast()`
方法将引发异常。 另外,如果找不到该元素,则
`remove(element)`
会引发异常。
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -257,7 +257,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Cow
,
Horse
]
...
...
@@ -267,7 +267,7 @@ Removed First Element: Cat
Removed
Last
Element:
Horse
```
**2.使用
poll(),pollFirst()和 pollLast()
方法删除元素**
**2.使用
`poll()`,`pollFirst()`和`pollLast()`
方法删除元素**
*
`poll()`
-返回并删除数组双端队列的第一个元素
*
`pollFirst()`
-返回并删除数组双端队列的第一个元素(相当于
`poll()`
)
...
...
@@ -275,7 +275,7 @@ Removed Last Element: Horse
**注意**
:如果数组双端队列为空,则如果找不到该元素,则
`poll()`
,
`pollFirst()`
和
`pollLast()`
返回
`null`
。
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -305,7 +305,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Cow
,
Horse
]
...
...
@@ -315,7 +315,7 @@ Removed First Element: Cat
Removed
Last
Element:
Horse
```
**3.删除元素:使用
clear()
方法**
**3.删除元素:使用
`clear()`
方法**
要从数组双端队列中删除所有元素,我们使用
`clear()`
方法。 例如,
...
...
@@ -338,7 +338,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -347,7 +347,7 @@ New ArrayDeque: []
* * *
### 迭代
ArrayDeque
### 迭代
`ArrayDeque`
*
`iterator()`
-返回可用于遍历数组双端队列的迭代器
*
`descendingIterator()`
-返回一个迭代器,该迭代器可用于以相反顺序遍历数组双端队列
...
...
@@ -385,7 +385,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayDeque:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -406,7 +406,7 @@ ArrayDeque in reverse order: [Horse, Cat, Dog]
* * *
##
ArrayDeque
作为栈
##
`ArrayDeque`
作为栈
要在 Java 中实现
**LIFO(后进先出)**
栈,建议在
[
栈类
](
/java-programming/stack
"Java Stack Class"
)
上使用双端队列。
`ArrayDeque`
类可能比
`Stack`
类快。
...
...
@@ -416,7 +416,7 @@ ArrayDeque in reverse order: [Horse, Cat, Dog]
*
`peek()`
-从栈顶部返回一个元素
*
`pop()`
-返回并从栈顶部删除元素
For example,
例如:
```
java
import
java.util.ArrayDeque
;
...
...
@@ -442,7 +442,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Stack:
[
Horse
,
Cat
,
Dog
]
...
...
@@ -453,7 +453,7 @@ Removed Element: Horse
* * *
##
ArrayDeque 与 LinkedList
类
##
`ArrayDeque`与`LinkedList`
类
`ArrayDeque`
和
[
Java LinkedList
](
/java-programming/linkedlist
"Java LinkedList"
)
都实现了
`Deque`
接口。 但是,它们之间存在一些差异。
...
...
docs/java/72.md
浏览文件 @
63fc36e3
# Java
BlockingQueue
# Java
`BlockingQueue`
> 原文: [https://www.programiz.com/java-programming/blockingqueue](https://www.programiz.com/java-programming/blockingqueue)
#### 在本教程中,我们将学习 Java
BlockingQueue
接口及其方法。
#### 在本教程中,我们将学习 Java
`BlockingQueue`
接口及其方法。
Java
`Collections`
框架的
`BlockingQueue`
接口扩展了
`Queue`
接口。 它允许任何操作等待成功执行。
...
...
@@ -10,7 +10,7 @@ Java `Collections`框架的`BlockingQueue`接口扩展了`Queue`接口。 它允
* * *
## 实现
BlockingQueue
的类
## 实现
`BlockingQueue`
的类
由于
`BlockingQueue`
是一个接口,我们无法提供它的直接实现。
...
...
@@ -39,7 +39,7 @@ BlockingQueue<String> animal2 = new LinkedBlockingQueue<>();
* * *
##
BlockingQueue
的方法
##
`BlockingQueue`
的方法
根据队列是满还是空,阻塞队列的方法可以分为 3 类:
...
...
@@ -57,7 +57,7 @@ BlockingQueue<String> animal2 = new LinkedBlockingQueue<>();
*
`peek()`
-返回阻塞队列的开头。 如果队列为空,则返回
`null`
。
*
`poll()`
-从阻止队列中删除一个元素。 如果队列为空,则返回
`null`
。
**
更多要约()和 poll()
**
**
`offer()`和`poll()`
**
`offer()`
和
`poll()`
方法可以与超时一起使用。 也就是说,我们可以传递时间单位作为参数。 例如,
...
...
@@ -67,7 +67,7 @@ offer(value, 100, milliseconds)
这里,
*
`
值
`
是要插入队列的元素
*
`
value
`
是要插入队列的元素
*
并且我们将超时设置为 100 毫秒
这意味着
`offer()`
方法将尝试在
`100`
毫秒内将元素插入到阻塞队列中。 如果无法在 100 毫秒内插入元素,则该方法返回
`false`
。
...
...
@@ -89,7 +89,7 @@ offer(value, 100, milliseconds)
* * *
##
ArrayBlockingQueue 中 BlockingQueue
的实现
##
`ArrayBlockingQueue`中`BlockingQueue`
的实现
```
java
import
java.util.concurrent.BlockingQueue
;
...
...
@@ -131,7 +131,7 @@ Removed Element: 2
* * *
## 为什么选择
BlockingQueue
?
## 为什么选择
`BlockingQueue`
?
在 Java 中,
`BlockingQueue`
被视为
**线程安全的**
集合。 这是因为它在多线程操作中可能会有所帮助。
...
...
docs/java/73.md
浏览文件 @
63fc36e3
# Java
ArrayBlockingQueue
# Java
`ArrayBlockingQueue`
> 原文: [https://www.programiz.com/java-programming/arrayblockingqueue](https://www.programiz.com/java-programming/arrayblockingqueue)
#### 在本教程中,我们将借助示例学习
ArrayBlockingQueue
类及其方法。
#### 在本教程中,我们将借助示例学习
`ArrayBlockingQueue`
类及其方法。
Java
Collections
框架的
`ArrayBlockingQueue`
类使用数组提供阻塞队列实现。
Java
集合
框架的
`ArrayBlockingQueue`
类使用数组提供阻塞队列实现。
它实现了
[
Java
BlockingQueue
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
。
它实现了
[
Java
`BlockingQueue`
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
。
![
ArrayBlockingQueue implements the BlockingQueue interface in Java.
](
img/7062cb98a9dbc593873ba5a06482eae5.png
)
* * *
## 创建
ArrayBlockingQueue
## 创建
`ArrayBlockingQueue`
为了创建一个数组阻止队列,我们必须导入
`java.util.concurrent.ArrayBlockingQueue`
包。
...
...
@@ -24,7 +24,7 @@ ArrayBlockingQueue<Type> animal = new ArrayBlockingQueue<>(int capacity);
这里,
*
`
类型
`
-数组阻止队列的类型
*
`
Type
`
-数组阻止队列的类型
*
`容量`
-数组阻塞队列的大小
例如,
...
...
@@ -41,7 +41,7 @@ ArrayBlockingQueue<Integer> age = new ArrayBlockingQueue<>(5);
* * *
##
ArrayBlockingQueue
的方法
##
`ArrayBlockingQueue`
的方法
`ArrayBlockingQueue`
类提供
`BlockingQueue`
接口中所有方法的实现。
...
...
@@ -58,7 +58,7 @@ ArrayBlockingQueue<Integer> age = new ArrayBlockingQueue<>(5);
*
`add()`
-将指定的元素插入数组阻止队列。 如果队列已满,它将引发异常。
*
`offer()`
-将指定的元素插入数组阻止队列。 如果队列已满,则返回
`false`
。
For example,
例如:
```
java
import
java.util.concurrent.ArrayBlockingQueue
;
...
...
@@ -91,7 +91,7 @@ ArrayBlockingQueue: [Dog, Cat, Horse]
*
`peek()`
-从数组阻止队列的前面返回一个元素。 如果队列为空,则返回
`null`
。
*
`iterator()`
-返回一个迭代器对象,以顺序访问数组阻止队列中的元素。 如果队列为空,则抛出异常。 我们必须导入
`java.util.Iterator`
包才能使用它。
For example,
例如:
```
java
import
java.util.concurrent.ArrayBlockingQueue
;
...
...
@@ -123,7 +123,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayBlockingQueue:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -139,7 +139,7 @@ ArrayBlockingQueue Elements: Dog, Cat, Horse,
*
`poll()`
-返回并从数组阻止队列中删除指定的元素。 如果队列为空,则返回
`null`
。
*
`clear()`
-从数组阻止队列中删除所有元素。
For example,
例如:
```
java
import
java.util.concurrent.ArrayBlockingQueue
;
...
...
@@ -169,7 +169,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayBlockingQueue:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -181,19 +181,19 @@ Updated ArrayBlockingQueue: []
* * *
##
put()和 take()
方法
##
`put()`和`take()`
方法
在多线程进程中,我们可以使用
`put()`
和
`take()`
阻止一个线程的操作,使其与另一个线程同步。 这些方法将等待直到可以成功执行。
* * *
###
put()
方法
###
`put()`
方法
要将元素添加到数组阻塞队列的末尾,可以使用
`put()`
方法。
如果数组阻塞队列已满,它将等待直到数组阻塞队列中有空间添加元素。
For example,
例如:
```
java
import
java.util.concurrent.ArrayBlockingQueue
;
...
...
@@ -215,23 +215,23 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayBlockingQueue:
[
Dog
,
Cat
]
```
在此,如果
`InterruptedException`
方法在等待时被中断,则可能会抛出
`InterruptedException`
。 因此,我们必须将其封装在
[HTG2] try..catch
块内。
在此,如果
`InterruptedException`
方法在等待时被中断,则可能会抛出
`InterruptedException`
。 因此,我们必须将其封装在
`try..catch`
块内。
* * *
###
take()
方法
###
`take()`
方法
要从数组阻塞队列的前面返回并删除一个元素,我们可以使用
`take()`
方法。
如果数组阻塞队列为空,它将等待,直到数组阻塞队列中有要删除的元素为止。
For example,
例如:
```
java
import
java.util.concurrent.ArrayBlockingQueue
;
...
...
@@ -257,7 +257,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayBlockingQueue:
[
Dog
,
Cat
]
...
...
@@ -278,7 +278,7 @@ Removed Element: Dog
* * *
## 为什么要使用
ArrayBlockingQueue
?
## 为什么要使用
`ArrayBlockingQueue`
?
`ArrayBlockingQueue`
使用数组作为其内部存储。
...
...
docs/java/74.md
浏览文件 @
63fc36e3
# Java
LinkedBlockingQueue
# Java
`LinkedBlockingQueue`
> 原文: [https://www.programiz.com/java-programming/linkedblockingqueue](https://www.programiz.com/java-programming/linkedblockingqueue)
#### 在本教程中,我们将借助示例学习
LinkedBLockingQueue
类及其方法。
#### 在本教程中,我们将借助示例学习
`LinkedBLockingQueue`
类及其方法。
Java
`Collections`
框架的
`LinkedBlockingQueue`
类使用链接列表提供阻止队列实现。
它实现了
[
Java
BlockingQueue
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
。
它实现了
[
Java
`BlockingQueue`
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
。
![
ArrayBlockingQueue implements the BlockingQueue interface in Java.
](
img/7062cb98a9dbc593873ba5a06482eae5.png
)
* * *
## 创建
LinkedBlockingQueue
## 创建
`LinkedBlockingQueue`
为了创建链接的阻塞队列,我们必须导入
`java.util.concurrent.LinkedBlockingQueue`
包。
...
...
@@ -24,7 +24,7 @@ Java `Collections`框架的`LinkedBlockingQueue`类使用链接列表提供阻
LinkedBlockingQueue
<
Type
>
animal
=
new
LinkedBlockingQueue
<>();
```
在此,默认初始容量为
2
<sup>
31
</sup>
-1
。
在此,默认初始容量为
`2 ^ 31 -1`
。
**2.具有初始容量**
...
...
@@ -34,7 +34,7 @@ LinkedBlockingQueue<Type> animal = new LinkedBlockingQueue<>(int capacity);
这里,
*
`
类型
`
-链接的阻塞队列的类型
*
`
Type
`
-链接的阻塞队列的类型
*
`容量`
-链接的阻塞队列的大小
例如,
...
...
@@ -51,9 +51,9 @@ LinkedBlockingQueue<Integer> age = new LinkedBlockingQueue<>(5);
* * *
##
LinkedBlockingQueue
的方法
##
`LinkedBlockingQueue`
的方法
`LinkedBlockingQueue`
类提供
[
BlockingQueue
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
中所有方法的实现。
`LinkedBlockingQueue`
类提供
[
`BlockingQueue`
接口
](
/java-programming/blockingqueue
"Java BlockingQueue Interface"
)
中所有方法的实现。
这些方法用于从链接的阻塞队列中插入,访问和删除元素。
...
...
@@ -68,7 +68,7 @@ LinkedBlockingQueue<Integer> age = new LinkedBlockingQueue<>(5);
*
`add()`
-将指定的元素插入链接的阻塞队列。 如果队列已满,它将引发异常。
*
`offer()`
-将指定的元素插入链接的阻塞队列。 如果队列已满,则返回
`false`
。
For example,
例如:
```
java
import
java.util.concurrent.LinkedBlockingQueue
;
...
...
@@ -101,7 +101,7 @@ LinkedBlockingQueue: [Dog, Cat, Horse]
*
`peek()`
-从链接的阻塞队列的最前面返回一个元素。 如果队列为空,则返回
`null`
。
*
`iterator()`
-返回一个迭代器对象,以按顺序访问链接的阻塞队列中的元素。 如果队列为空,则抛出异常。 我们必须导入
`java.util.Iterator`
包才能使用它。
For example,
例如:
```
java
import
java.util.concurrent.LinkedBlockingQueue
;
...
...
@@ -133,7 +133,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedBlockingQueue:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -149,7 +149,7 @@ LinkedBlockingQueue Elements: Dog, Cat, Horse,
*
`poll()`
-返回指定的元素并将其从链接的阻塞队列中移除。 如果队列为空,则返回
`null`
。
*
`clear()`
-从链接的阻止队列中删除所有元素。
For example,
例如:
```
java
import
java.util.concurrent.LinkedBlockingQueue
;
...
...
@@ -179,7 +179,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedBlockingQueue:
[
Dog
,
Cat
,
Horse
]
...
...
@@ -191,19 +191,19 @@ Updated LinkedBlockingQueue: []
* * *
##
put()和 take()
方法
##
`put()`和`take()`
方法
在多线程进程中,我们可以使用
`put()`
和
`take()`
阻止一个线程的操作,使其与另一个线程同步。 这些方法将等待直到可以成功执行。
* * *
###
put()
方法
###
`put()`
方法
要将指定的元素插入到链接的阻塞队列的末尾,我们使用
`put()`
方法。
如果链接的阻塞队列已满,它将等待,直到链接的阻塞队列中有足够的空间来插入元素。
For example,
例如:
```
java
import
java.util.concurrent.LinkedBlockingQueue
;
...
...
@@ -225,23 +225,23 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedBlockingQueue:
[
Dog
,
Cat
]
```
在此,如果
`InterruptedException`
方法在等待时被中断,则可能会抛出
`InterruptedException`
。 因此,我们必须将其封装在
[HTG2] try..catch
块中。
在此,如果
`InterruptedException`
方法在等待时被中断,则可能会抛出
`InterruptedException`
。 因此,我们必须将其封装在
`try..catch`
块中。
* * *
###
take()
方法
###
`take()`
方法
要从链接的阻塞队列的前面返回并删除一个元素,我们可以使用
`take()`
方法。
如果链接的阻塞队列为空,它将等待,直到要删除的链接阻塞队列中的元素为止。
For example,
例如:
```
java
import
java.util.concurrent.LinkedBlockingQueue
;
...
...
@@ -268,7 +268,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedBlockingQueue:
[
Dog
,
Cat
]
...
...
@@ -290,7 +290,7 @@ New LinkedBlockingQueue: [Cat]
* * *
## 为什么要使用
LinkedBlockingQueue
?
## 为什么要使用
`LinkedBlockingQueue`
?
`LinkedBlockingQueue`
使用链接列表作为其内部存储。
...
...
docs/java/75.md
浏览文件 @
63fc36e3
# Java 地图
\ No newline at end of file
# Java 映射
\ No newline at end of file
docs/java/76.md
浏览文件 @
63fc36e3
# Java
Map
接口
# Java
`Map`
接口
> 原文: [https://www.programiz.com/java-programming/map](https://www.programiz.com/java-programming/map)
#### 在本教程中,我们将学习 Java
Map
接口及其方法。
#### 在本教程中,我们将学习 Java
`Map`
接口及其方法。
Java 集合框架的
`Map`
接口提供了
地图
数据结构的功能。
Java 集合框架的
`Map`
接口提供了
映射
数据结构的功能。
它实现了
`Collection`
接口。
* * *
##
地图
的工作
##
映射
的工作
在 Java 中,
`Map`
的元素存储在
**键/值**
对中。
**键**
是与各个
**值**
相关联的唯一值。
...
...
@@ -34,7 +34,7 @@ Java 集合框架的`Map`接口提供了地图数据结构的功能。
* * *
## 实现
Map
的类
## 实现
`Map`
的类
由于
`Map`
是一个接口,因此我们无法从中创建对象。
...
...
@@ -52,7 +52,7 @@ Java 集合框架的`Map`接口提供了地图数据结构的功能。
* * *
## 扩展
Map
的接口
## 扩展
`Map`
的接口
`Map`
接口还通过以下子接口扩展:
...
...
@@ -64,9 +64,9 @@ Java 集合框架的`Map`接口提供了地图数据结构的功能。
* * *
## 如何使用
地图
?
## 如何使用
映射
?
在 Java 中,必须导入
`java.util.Map`
包才能使用
`Map`
。 导入包后,将按照以下方法创建
地图
。
在 Java 中,必须导入
`java.util.Map`
包才能使用
`Map`
。 导入包后,将按照以下方法创建
映射
。
```
java
// Map implementation using HashMap
...
...
@@ -77,37 +77,37 @@ Map<Key, Value> numbers = new HashMap<>();
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
* * *
##
地图
方法
##
映射
方法
`Map`
接口包含
`Collection`
接口的所有方法。 这是因为
`Collection`
是
`Map`
的超级接口。
除了
`Collection`
接口中可用的方法外,
`Map`
接口还包括以下方法:
*
**
put(K,V)
**
-将键
`K`
和值
`V`
的关联插入到映射中。 如果键已经存在,则新值将替换旧值。
*
**
putAll()
**
-将指定映射中的所有条目插入此映射。
*
**
putIfAbsent(K,V)
**
-如果键
`K`
尚未与值
`V`
关联,则插入关联。
*
**
get(K)
**
-返回与指定键
`K`
关联的值。 如果找不到密钥,则返回
`null`
。
*
**
getOrDefault(K,defaultValue)
**
-返回与指定键
`K`
关联的值。 如果未找到密钥,则返回
`defaultValue`
。
*
**
containsKey(K)**
-检查地图
中是否存在指定的键
`K`
。
*
**
containsValue(V)
**
-检查指定值
`V`
是否存在于映射中。
*
**
replace(K,V)
**
-用新的指定值
`V`
替换键
`K`
的值。
*
**
replace(K,oldValue,newValue)
**
-仅当键
`K`
时,才将键
`K`
的值替换为新值
`newValue`
与值
`oldValue`
关联。
*
**
remove(K)
**
-从键
`K`
表示的映射中删除条目。
*
**
remove(K,V)
**
-从映射中删除具有与值
`V`
关联的键
`K`
的条目。
*
**
keySet()
**
-返回映射中存在的所有键的集合。
*
**
values()
**
-返回映射中存在的所有值的集合。
*
**
entrySet()
**
-返回映射中存在的所有键/值映射的集合。
*
**
`put(K, V)`
**
-将键
`K`
和值
`V`
的关联插入到映射中。 如果键已经存在,则新值将替换旧值。
*
**
`putAll()`
**
-将指定映射中的所有条目插入此映射。
*
**
`putIfAbsent(K, V)`
**
-如果键
`K`
尚未与值
`V`
关联,则插入关联。
*
**
`get(K)`
**
-返回与指定键
`K`
关联的值。 如果找不到密钥,则返回
`null`
。
*
**
`getOrDefault(K, defaultValue)`
**
-返回与指定键
`K`
关联的值。 如果未找到密钥,则返回
`defaultValue`
。
*
**
`containsKey(K)`**
-检查映射
中是否存在指定的键
`K`
。
*
**
`containsValue(V)`
**
-检查指定值
`V`
是否存在于映射中。
*
**
`replace(K, V)`
**
-用新的指定值
`V`
替换键
`K`
的值。
*
**
`replace(K, oldValue, newValue)`
**
-仅当键
`K`
时,才将键
`K`
的值替换为新值
`newValue`
与值
`oldValue`
关联。
*
**
`remove(K)`
**
-从键
`K`
表示的映射中删除条目。
*
**
`remove(K, V)`
**
-从映射中删除具有与值
`V`
关联的键
`K`
的条目。
*
**
`keySet()`
**
-返回映射中存在的所有键的集合。
*
**
`values()`
**
-返回映射中存在的所有值的集合。
*
**
`entrySet()`
**
-返回映射中存在的所有键/值映射的集合。
* * *
##
地图界面
的实现
##
`Map`接口
的实现
**1.
实现 HashMap
类**
**1.
`HashMap`实现
类**
```
java
import
java.util.Map
;
...
...
@@ -154,7 +154,7 @@ Removed Value: 2
* * *
**2.
实现 TreeMap
类**
**2.
`TreeMap`实现
类**
```
java
import
java.util.Map
;
...
...
@@ -183,7 +183,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Map
using
TreeMap:
{
First
=
1
,
Second
=
2
}
...
...
docs/java/77.md
浏览文件 @
63fc36e3
# Java
HashMap
# Java
`HashMap`
> 原文: [https://www.programiz.com/java-programming/hashmap](https://www.programiz.com/java-programming/hashmap)
#### 在本教程中,我们将借助示例学习 Java
HashMap
类及其方法。
#### 在本教程中,我们将借助示例学习 Java
`HashMap`
类及其方法。
Java 集合框架的
`HashMap`
类提供
[
Map
接口
](
/java-programming/map
"Java Map Interface"
)
的哈希表实现。
Java 集合框架的
`HashMap`
类提供
[
`Map`
接口
](
/java-programming/map
"Java Map Interface"
)
的哈希表实现。
* * *
## 创建一个
HashMap
## 创建一个
`HashMap`
为了创建哈希
图,我们必须首先导入
`java.util.HashMap`
包。 导入包后,就可以使用 Java 创建哈希图
。
为了创建哈希
映射,我们必须首先导入
`java.util.HashMap`
包。 导入包后,就可以使用 Java 创建哈希映射
。
```
java
// HashMap creation with 8 capacity and 0.6 load factor
HashMap
<
Key
,
Value
>
numbers
=
new
HashMap
<>(
8
,
0.6f
);
```
在上面的代码中,我们创建了一个名为
`number`
的哈希
图
。
在上面的代码中,我们创建了一个名为
`number`
的哈希
映射
。
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
Key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
Value`
-映射
中与按键相关联的元素
注意部分
`new HashMap<>(8, 0.6)`
。 在此,第一个参数是
**容量**
,第二个参数是
**loadFactor**
。
注意部分
`new HashMap<>(8, 0.6)`
。 在此,第一个参数是
`capcity`
,第二个参数是
`loadFactor`
。
*
**
容量**
-此哈希图
的容量为 8。意味着,它可以存储 8 个条目。
*
**
loadFactor**
-此哈希图
的负载因子为 0.6。 这意味着,只要我们的哈希表填充了 60%,条目就会移到新哈希表中,其大小是原始哈希表的两倍。
*
**
`capcity`**
-此哈希映射
的容量为 8。意味着,它可以存储 8 个条目。
*
**
`loadFactor`**
-此哈希映射
的负载因子为 0.6。 这意味着,只要我们的哈希表填充了 60%,条目就会移到新哈希表中,其大小是原始哈希表的两倍。
**默认容量和负载系数**
...
...
@@ -40,12 +40,12 @@ HashMap<Key, Value> numbers1 = new HashMap<>();
默认,
*
哈希
图
的容量将为 16
*
哈希
映射
的容量将为 16
*
负载系数将为 0.75
* * *
## 从其他
地图创建 HashMap
## 从其他
映射创建`HashMap`
这是我们如何创建包含其他映射的所有元素的哈希映射的方法。
...
...
@@ -77,13 +77,13 @@ HashMap2: {Two=2, Three=3, Four=4}
* * *
##
HashMap
的方法
##
`HashMap`
的方法
`HashMap`
类提供了各种方法,可让我们在
地图
上执行各种操作。
`HashMap`
类提供了各种方法,可让我们在
映射
上执行各种操作。
* * *
## 将元素插入
HashMap
## 将元素插入
`HashMap`
*
`put()`
-将指定的键/值映射插入到映射中
*
`putAll()`
-将指定映射中的所有条目插入此映射中
...
...
@@ -118,7 +118,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap
of
even
numbers:
{
Six
=
6
,
Four
=
4
,
Two
=
2
}
...
...
@@ -127,15 +127,15 @@ HashMap of numbers: {Six=6, One=1, Four=4, Two=2}
* * *
## 访问
HashMap
元素
## 访问
`HashMap`
元素
**1.使用
entrySet(),keySet()和 values()
**
**1.使用
`entrySet()`,`keySet()`和`values()`
**
*
`entrySet()`
-返回一组所有键/值映射的映射
*
`keySet()`
-返回
地图
的所有键的集合
*
`keySet()`
-返回
映射
的所有键的集合
*
`values()`
-返回一组所有映射值
For example,
例如:
```
java
import
java.util.HashMap
;
...
...
@@ -161,7 +161,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -170,12 +170,12 @@ Keys: [One, Two, Three]
Values:
[
1
,
2
,
3
]
```
**2.使用
get()和 getOrDefault()
**
**2.使用
`get()`和`getOrDefault()`
**
*
`get()`
-返回与指定键关联的值。 如果找不到密钥,则返回
`null`
。
*
`getOrDefault()`
-返回与指定键关联的值。 如果找不到密钥,则返回指定的默认值。
For example,
例如:
```
java
import
java.util.HashMap
;
...
...
@@ -200,7 +200,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -215,7 +215,7 @@ Returned Number: 5
*
`remove(key)`
-返回并从映射中删除与指定键关联的条目
*
`remove(key, value)`
-仅当指定键映射到指定值并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.HashMap
;
...
...
@@ -242,7 +242,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -255,11 +255,11 @@ Updated HashMap: {One=1}
## 替换元素
*
`replace(key, value)`
-用新的
`
值`
替换与指定的
`键
`
相关的值
*
`replace(key, old, new)`
-仅当
`旧`
值已与指定的
`
键
`
关联时,才用
`新`
值替换
`旧`
值。
*
`replace(key, value)`
-用新的
`
value`
替换与指定的
`key
`
相关的值
*
`replace(key, old, new)`
-仅当
`旧`
值已与指定的
`
key
`
关联时,才用
`新`
值替换
`旧`
值。
*
`replaceAll(function)`
-用指定的
`函数`
的结果替换映射的每个值
For example,
例如:
```
java
import
java.util.HashMap
;
...
...
@@ -285,7 +285,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
HashMap:
{
Second
=
2
,
Third
=
3
,
First
=
1
}
...
...
@@ -299,19 +299,19 @@ HashMap using replaceAll: {Second=24, Third=35, First=3}
numbers
.
replaceAll
((
key
,
oldValue
)
->
oldValue
+
2
);
```
在此,该方法访问
地图
的所有条目。 然后,它将所有值替换为
[
lambda 表达式
](
https://www.programiz.com/java-programming/lambda-expression
)
提供的新值。
在此,该方法访问
映射
的所有条目。 然后,它将所有值替换为
[
lambda 表达式
](
https://www.programiz.com/java-programming/lambda-expression
)
提供的新值。
* * *
## 重新计算值
**1.使用
compute()
方法**
**1.使用
`compute()`
方法**
*
`compute()`
-使用指定的函数计算新值。 然后,它将计算的值与指定的键相关联。
*
`computeIfAbsent()`
-如果指定的键未映射到任何值,则该方法将使用指定的函数计算新值。 然后,它将新值与键关联。
*
`computeIfPresent()`
-如果指定的键已经映射到任何值,则此方法将使用指定的函数计算新值。 然后,它将新值与键关联。
For example,
例如:
```
java
import
java.util.HashMap
;
...
...
@@ -340,7 +340,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
HashMap:
{
Second
=
2
,
First
=
1
}
...
...
@@ -349,13 +349,13 @@ HashMap using computeIfAbsent(): {Second=3 First=3, Three=5}
HashMap
using
computeIfPresent
():
{
Second
=
6
,
First
=
3
,
three
=
5
}
```
在上面的示例中,我们使用
`compute()`
方法重新计算了
地图
的值。
在上面的示例中,我们使用
`compute()`
方法重新计算了
映射
的值。
在这里,我们使用
[
lambda 表达式
](
https://www.programiz.com/java-programming/lambda-expression
)
作为方法参数来重新计算值。
* * *
**2.使用
merge()
方法**
**2.使用
`merge()`
方法**
如果指定的键尚未关联,则
`merge()`
方法会将指定的值关联到指定的键。
...
...
@@ -379,29 +379,29 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
HashMap:
{
Second
=
2
,
First
=
1
}
New
HashMap:
{
Second
=
2
,
First
=
5
}
```
在上面的示例中,
`merge()`
方法采用 3 个参数:
**键**
,
**newValue**
和 lambda 表达式(用于计算新的合并值)。
在上面的示例中,
`merge()`
方法采用 3 个参数:
`key`
,
`newValue`
和 lambda 表达式(用于计算新的合并值)。
* * *
##
HashMap
的其他方法
##
`HashMap`
的其他方法
| 方法 | 描述 |
|
`clear()`
| 从
地图
中删除所有条目 |
|
`containsKey()`
| 检查
地图
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
地图
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
地图
的大小 |
|
`isEmpty()`
| 检查
地图
是否为空并返回布尔值 |
|
`clear()`
| 从
映射
中删除所有条目 |
|
`containsKey()`
| 检查
映射
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
映射
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
映射
的大小 |
|
`isEmpty()`
| 检查
映射
是否为空并返回布尔值 |
* * *
## 通过
HashMap
进行迭代
## 通过
`HashMap`
进行迭代
在
`HashMap`
中,我们可以
...
...
@@ -411,7 +411,7 @@ New HashMap: {Second=2, First=5}
* * *
**1.使用
forEach
循环**
**1.使用
`forEach`
循环**
```
java
import
java.util.HashMap
;
...
...
@@ -452,7 +452,7 @@ class Main {
```
**
Output**
**
输出**
:
```
java
HashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -463,11 +463,11 @@ Values: 1, 2, ,3,
在上面的程序中,请注意,我们已经导入了
`java.util.Map.Entry`
包。 在这里,
`Map.Entry`
是
`Map`
接口的嵌套类。
该嵌套类返回
地图
的视图(元素)。
该嵌套类返回
映射
的视图(元素)。
* * *
**2.使用
iterator()
方法**
**2.使用
`iterator()`
方法**
也可以使用
`iterator()`
方法迭代
`HashMap`
。 为了使用此方法,我们必须导入
`java.util.Iterator`
包。
...
...
@@ -514,7 +514,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
docs/java/78.md
浏览文件 @
63fc36e3
# Java
LinkedHashMap
# Java
`LinkedHashMap`
> 原文: [https://www.programiz.com/java-programming/linkedhashmap](https://www.programiz.com/java-programming/linkedhashmap)
#### 在本教程中,我们将借助示例学习 Java
LinkedHashMap
类及其操作。
#### 在本教程中,我们将借助示例学习 Java
`LinkedHashMap`
类及其操作。
Java 集合框架的
`LinkedHashMap`
类提供
[
Map
接口
](
/java-programming/map
"Java Map interface"
)
的哈希表和链表实现。
Java 集合框架的
`LinkedHashMap`
类提供
[
`Map`
接口
](
/java-programming/map
"Java Map interface"
)
的哈希表和链表实现。
`LinkedHashMap`
接口扩展了
[
HashMap
](
/java-programming/hashmap
)
类,以将其条目存储在哈希表中。 它在内部维护所有条目之间的双向链接列表,以对条目进行排序。
`LinkedHashMap`
接口扩展了
[
`HashMap`
](
/java-programming/hashmap
)
类,以将其条目存储在哈希表中。 它在内部维护所有条目之间的双向链接列表,以对条目进行排序。
![
Java LinkedHashMap class extends the HashMap class.
](
img/70bc7a6ac01cb14fb13ba84a8661d576.png
)
* * *
## 创建一个
LinkedHashMap
## 创建一个
`LinkedHashMap`
为了创建链接的哈希
图
,我们必须首先导入
`java.util.LinkedHashMap`
包。 导入包后,可以使用以下方法在 Java 中创建链接的哈希表。
为了创建链接的哈希
映射
,我们必须首先导入
`java.util.LinkedHashMap`
包。 导入包后,可以使用以下方法在 Java 中创建链接的哈希表。
```
java
// LinkedHashMap with initial capacity 8 and load factor 0.6
LinkedHashMap
<
Key
,
Value
>
numbers
=
new
LinkedHashMap
<>(
8
,
0.6f
);
```
在上面的代码中,我们创建了一个名为
`number`
的链接哈希
图
。
在上面的代码中,我们创建了一个名为
`number`
的链接哈希
映射
。
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值
`
-由映射中的键关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value
`
-由映射中的键关联的元素
注意部分
`new LinkedHashMap<>(8, 0.6)`
。 在此,第一个参数是
**容量**
,第二个参数是
**loadFactor**
。
注意部分
`new LinkedHashMap<>(8, 0.6)`
。 在此,第一个参数是
`capcity`
,第二个参数是
`loadFactor`
。
*
**
容量**
-此链接的哈希图
的容量为 8。意味着,它可以存储 8 个条目。
*
**
loadFactor**
-此链接的哈希图的负载因子为 0.6。 这意味着,只要我们的哈希图
填充了 60%,条目就会被移到新哈希表中,该哈希表的大小是原始哈希表的两倍。
*
**
`capcity`**
-此链接的哈希映射
的容量为 8。意味着,它可以存储 8 个条目。
*
**
`loadFactor`**
-此链接的哈希映射的负载因子为 0.6。 这意味着,只要我们的哈希映射
填充了 60%,条目就会被移到新哈希表中,该哈希表的大小是原始哈希表的两倍。
**默认容量和负载系数**
无需定义其容量和负载因子就可以创建链接的哈希
图
。 例如,
无需定义其容量和负载因子就可以创建链接的哈希
映射
。 例如,
```
java
//LinkedHashMap with default capacity and load factor
...
...
@@ -44,7 +44,7 @@ LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>();
默认,
*
链接的哈希
图
的容量将为 16
*
链接的哈希
映射
的容量将为 16
*
负载系数将为 0.75
**注意**
:
`LinkedHashMap`
类还允许我们定义其条目的顺序。 例如
...
...
@@ -54,15 +54,15 @@ LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>();
LinkedHashMap
<
Key
,
Value
>
numbers2
=
new
LinkedHashMap
<>(
capacity
,
loadFactor
,
accessOrder
);
```
此处,
`accessOrder`
是布尔值。 其默认值为
`false`
。 在这种情况下,链接的哈希
图
中的条目将根据其插入顺序进行排序。
此处,
`accessOrder`
是布尔值。 其默认值为
`false`
。 在这种情况下,链接的哈希
映射
中的条目将根据其插入顺序进行排序。
但是,如果将
`true`
作为
`accessOrder`
传递,则链接的哈希
图
中的条目将按从最近访问到最近访问的顺序排序。
但是,如果将
`true`
作为
`accessOrder`
传递,则链接的哈希
映射
中的条目将按从最近访问到最近访问的顺序排序。
* * *
## 从其他
地图创建 LinkedHashMap
## 从其他
映射创建`LinkedHashMap`
这是我们如何创建一个包含其他
地图
所有元素的链接哈希表。
这是我们如何创建一个包含其他
映射
所有元素的链接哈希表。
```
java
import
java.util.LinkedHashMap
;
...
...
@@ -92,13 +92,13 @@ LinkedHashMap2: {Two=2, Four=4, Three=3}
* * *
##
LinkedHashMap
的方法
##
`LinkedHashMap`
的方法
`LinkedHashMap`
类提供允许我们在
地图
上执行各种操作的方法。
`LinkedHashMap`
类提供允许我们在
映射
上执行各种操作的方法。
* * *
## 将元素插入
LinkedHashMap
## 将元素插入
`LinkedHashMap`
*
`put()`
-将指定的键/值映射插入到映射中
*
`putAll()`
-将指定映射中的所有条目插入此映射中
...
...
@@ -134,7 +134,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
LinkedHashMap:
{
Two
=
2
,
Four
=
4
}
...
...
@@ -144,15 +144,15 @@ New LinkedHashMap: {One=1, Two=2, Four=4, Six=6}
* * *
## 访问
LinkedHashMap
元素
## 访问
`LinkedHashMap`
元素
**1.使用
entrySet(),keySet()和 values()
**
**1.使用
`entrySet()`,`keySet()`和`values()`
**
*
`entrySet()`
-返回一组所有键/值映射的映射
*
`keySet()`
-返回
地图
的所有键的集合
*
`keySet()`
-返回
映射
的所有键的集合
*
`values()`
-返回一组所有映射值
For example,
例如:
```
java
import
java.util.LinkedHashMap
;
...
...
@@ -178,7 +178,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -187,12 +187,12 @@ Keys: [One, Two, Three]
Values:
[
1
,
2
,
3
]
```
**2.使用
get()和 getOrDefault()
**
**2.使用
`get()`和`getOrDefault()`
**
*
`get()`
-返回与指定键关联的值。 如果找不到密钥,则返回
`null`
。
*
`getOrDefault()`
-返回与指定键关联的值。 如果找不到该密钥,它将返回指定的默认值。
For example,
例如:
```
java
import
java.util.LinkedHashMap
;
...
...
@@ -217,7 +217,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -227,12 +227,12 @@ Returned Number: 5
* * *
## 删除了
LinkedHashMap
元素
## 删除了
`LinkedHashMap`
元素
*
`remove(key)`
-返回并从映射中删除与指定的
`
键
`
相关的条目
*
`remove(key, value)`
-仅当将指定的
`
键`
映射为指定的
`值
`
并返回布尔值时,才从映射中删除条目
*
`remove(key)`
-返回并从映射中删除与指定的
`
key
`
相关的条目
*
`remove(key, value)`
-仅当将指定的
`
key`
映射为指定的
`value
`
并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.LinkedHashMap
;
...
...
@@ -259,7 +259,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -270,18 +270,18 @@ Updated LinkedHashMap: {One=1}
* * *
##
LinkedHashMap
的其他方法
##
`LinkedHashMap`
的其他方法
| 方法 | 描述 |
|
`clear()`
| 从
地图
中删除所有条目 |
|
`containsKey()`
| 检查
地图
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
地图
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
地图
的大小 |
|
`isEmpty()`
| 检查
地图
是否为空,并返回布尔值 |
|
`clear()`
| 从
映射
中删除所有条目 |
|
`containsKey()`
| 检查
映射
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
映射
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
映射
的大小 |
|
`isEmpty()`
| 检查
映射
是否为空,并返回布尔值 |
* * *
##
LinkedHashMap 与。 哈希图
##
`LinkedHashMap`和`HashMap`
`LinkedHashMap`
和
`HashMap`
都实现
`Map`
接口。 但是,它们之间存在一些差异。
...
...
docs/java/79.md
浏览文件 @
63fc36e3
# Java
WeakHashMap
# Java
`WeakHashMap`
> 原文: [https://www.programiz.com/java-programming/weakhashmap](https://www.programiz.com/java-programming/weakhashmap)
#### 在本教程中,我们将借助示例学习 Java
WeakHashMap 及其操作。 我们还将了解 WeakHashMap 和 HashMap
之间的区别
#### 在本教程中,我们将借助示例学习 Java
`WeakHashMap`及其操作。 我们还将了解`WeakHashMap`和`HashMap`
之间的区别
Java 集合框架的
`WeakHashMap`
类提供了哈希表数据结构的功能。
它实现了
[
Map
接口
](
/java-programming/map
"Java Map Interface"
)
。
它实现了
[
`Map`
接口
](
/java-programming/map
"Java Map Interface"
)
。
![
Java WeakHashMap implements the Map interface.
](
img/0d8bdbef47c5484fe723a70162a3eef9.png
)
**注意**
:弱哈希
图的键为
**WeakReference**
类型。
**注意**
:弱哈希
映射的键为
`WeakReference`
类型。
如果引用不再在程序中使用,则弱引用类型的对象可以在 Java 中被垃圾回收。
让我们学习首先创建一个弱哈希
图。 然后,我们将学习它与哈希图
的区别。
让我们学习首先创建一个弱哈希
映射。 然后,我们将学习它与哈希映射
的区别。
* * *
## 创建一个
WeakHashMap
## 创建一个
`WeakHashMap`
为了创建一个弱哈希表,我们必须首先导入
`java.util.WeakHashMap`
包。 导入包后,可以使用以下方法在 Java 中创建弱哈希表。
...
...
@@ -27,21 +27,21 @@ Java 集合框架的`WeakHashMap`类提供了哈希表数据结构的功能。
WeakHashMap
<
Key
,
Value
>
numbers
=
new
WeakHashMap
<>(
8
,
0.6
);
```
在上面的代码中,我们创建了一个名为
`number`
的弱哈希
图
。
在上面的代码中,我们创建了一个名为
`number`
的弱哈希
映射
。
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
注意部分
`new WeakHashMap<>(8, 0.6)`
。 在此,第一个参数是
**容量**
,第二个参数是
**loadFactor**
。
注意部分
`new WeakHashMap<>(8, 0.6)`
。 在此,第一个参数是
`capcity`
,第二个参数是
`loadFactor`
。
*
**
容量
**
-此映射的容量为 8。意味着,它可以存储 8 个条目。
*
**
loadFactor
**
-此映射的负载因子为 0.6。 这意味着只要我们的哈希表填充了 60%,条目就会被移到新哈希表中,其大小是原始哈希表的两倍。
*
**
`capcity`
**
-此映射的容量为 8。意味着,它可以存储 8 个条目。
*
**
`loadFactor`
**
-此映射的负载因子为 0.6。 这意味着只要我们的哈希表填充了 60%,条目就会被移到新哈希表中,其大小是原始哈希表的两倍。
**默认容量和负载系数**
可以在不定义其容量和负载因子的情况下创建弱哈希
图
。 例如,
可以在不定义其容量和负载因子的情况下创建弱哈希
映射
。 例如,
```
java
// WeakHashMap with default capacity and load factor
...
...
@@ -50,12 +50,12 @@ WeakHashMap<Key, Value> numbers1 = new WeakHashMap<>();
默认,
*
地图
的容量将为 16
*
映射
的容量将为 16
*
负载系数将为 0.75
* * *
##
HashMap 和 WeakHashMap
之间的差异
##
`HashMap`和`WeakHashMap`
之间的差异
让我们看看 Java 中弱哈希表的实现。
...
...
@@ -95,11 +95,11 @@ WeakHashMap: {Four=4, Two=2}
WeakHashMap
after
garbage
collection:
{
Four
}
```
如我们所见,当弱哈希
图
的键
`两个`
设置为
`null`
并执行垃圾回收时,该键将被删除。
如我们所见,当弱哈希
映射
的键
`两个`
设置为
`null`
并执行垃圾回收时,该键将被删除。
这是因为与哈希
图不同,弱哈希图
的键是
**弱引用**
类型。 这意味着如果不再使用映射条目,则垃圾收集器将删除该条目。 这对于节省资源很有用。
这是因为与哈希
映射不同,弱哈希映射
的键是
**弱引用**
类型。 这意味着如果不再使用映射条目,则垃圾收集器将删除该条目。 这对于节省资源很有用。
现在让我们在哈希
图
中查看相同的实现。
现在让我们在哈希
映射
中查看相同的实现。
```
java
import
java.util.HashMap
;
...
...
@@ -130,24 +130,24 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
Four
=
4
,
Two
=
2
}
HashMap
after
garbage
collection:
{
Four
=
4
,
Two
=
2
}
```
在此,当哈希
图
的键
`和两个`
被设置为
`null`
并执行垃圾收集时,该键不会被删除。
在此,当哈希
映射
的键
`和两个`
被设置为
`null`
并执行垃圾收集时,该键不会被删除。
这是因为与弱散列表不同,散列表的键是
**强引用**
类型。 这意味着垃圾回收器不会删除映射的条目,即使不再使用该条目的键。
**注意**
:哈希
图和弱哈希图的所有功能都是相似的,只是弱哈希图的键是弱引用,而哈希图
的键是强引用。
**注意**
:哈希
映射和弱哈希映射的所有功能都是相似的,只是弱哈希映射的键是弱引用,而哈希映射
的键是强引用。
* * *
## 从其他
地图创建 WeakHashMap
## 从其他
映射创建`WeakHashMap`
这是我们可以从其他
地图
创建弱哈希表的方法。
这是我们可以从其他
映射
创建弱哈希表的方法。
```
java
import
java.util.HashMap
;
...
...
@@ -171,7 +171,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashMap:
{
Two
=
2
}
...
...
@@ -180,13 +180,13 @@ WeakHashMap: {Two=2}
* * *
##
WeakHashMap
的方法
##
`WeakHashMap`
的方法
`WeakHashMap`
类提供允许我们在
地图
上执行各种操作的方法。
`WeakHashMap`
类提供允许我们在
映射
上执行各种操作的方法。
* * *
## 将元素插入
WeakHashMap
## 将元素插入
`WeakHashMap`
*
`put()`
-将指定的键/值映射插入到映射中
*
`putAll()`
-将指定映射中的所有条目插入此映射中
...
...
@@ -229,7 +229,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
WeakHashMap
of
even
numbers:
{
Four
=
4
,
Two
=
2
}
...
...
@@ -238,15 +238,15 @@ WeakHashMap of numbers: {Two=2, Four=4, One=1}
* * *
## 访问
WeakHashMap
元素
## 访问
`WeakHashMap`
元素
**1.使用
entrySet(),keySet()和 values()
**
**1.使用
`entrySet()`,`keySet()`和`values()`
**
*
`entrySet()`
-返回一组所有键/值映射的映射
*
`keySet()`
-返回
地图
的所有键的集合
*
`keySet()`
-返回
映射
的所有键的集合
*
`values()`
-返回一组所有映射值
For example,
例如:
```
java
import
java.util.WeakHashMap
;
...
...
@@ -278,7 +278,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
WeakHashMap:
{
Two
=
2
,
One
=
1
}
...
...
@@ -287,12 +287,12 @@ Keys: [Two, One]
Values:
[
1
,
2
]
```
**2.使用
get()和 getOrDefault()
**
**2.使用
`get()`和`getOrDefault()`
**
*
`get()`
-返回与指定键关联的值。 如果找不到密钥,则返回
`null`
。
*
`getOrDefault()`
-返回与指定键关联的值。 如果找不到密钥,则返回指定的默认值。
For example,
例如:
```
java
import
java.util.WeakHashMap
;
...
...
@@ -324,7 +324,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
WeakHashMap:
{
Two
=
2
,
One
=
1
}
...
...
@@ -334,12 +334,12 @@ Using getOrDefault(): 4
* * *
## 删除
WeakHashMap
元素
## 删除
`WeakHashMap`
元素
*
`remove(key)`
-返回并从映射中删除与指定键关联的条目
*
`remove(key, value)`
-仅当指定键映射到指定值并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.WeakHashMap
;
...
...
@@ -372,7 +372,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
WeakHashMap:
{
Two
=
2
,
One
=
1
}
...
...
@@ -383,15 +383,15 @@ Updated WeakHashMap: {One=1}
* * *
##
WeakHashMap
的其他方法
##
`WeakHashMap`
的其他方法
| 方法 | 描述 |
|
`clear()`
| 从
地图
中删除所有条目 |
|
`containsKey()`
| 检查
地图
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
地图
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
地图
的大小 |
|
`isEmpty()`
| 检查
地图
是否为空并返回布尔值 |
|
`clear()`
| 从
映射
中删除所有条目 |
|
`containsKey()`
| 检查
映射
是否包含指定的键并返回布尔值 |
|
`containsValue()`
| 检查
映射
是否包含指定的值并返回布尔值 |
|
`size()`
| 返回
映射
的大小 |
|
`isEmpty()`
| 检查
映射
是否为空并返回布尔值 |
* * *
要了解更多信息,请访问
[
Java WeakHashMap(官方 Java 文档)
](
https://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html
)
。
\ No newline at end of file
要了解更多信息,请访问
[
Java `WeakHashMap`(官方 Java 文档)
](
https://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html
)
。
\ No newline at end of file
docs/java/80.md
浏览文件 @
63fc36e3
...
...
@@ -97,7 +97,7 @@ EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}
*
`keySet()`
-返回一个枚举映射的所有键的集合
*
`values()`
-返回一个枚举映射的所有值的集合
For example,
例如:
```
java
import
java.util.EnumMap
;
...
...
@@ -129,7 +129,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumMap:
{
SMALL
=
28
,
MEDIUM
=
32
,
LARGE
=
36
,
EXTRALARGE
=
40
}
...
...
@@ -142,7 +142,7 @@ Values: [28, 32, 36, 40]
`get()`
方法返回与指定键关联的值。 如果找不到指定的密钥,则返回
`null`
。
For example,
例如:
```
java
import
java.util.EnumMap
;
...
...
@@ -169,7 +169,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumMap:
{
SMALL
=
28
,
MEDIUM
=
32
,
LARGE
=
36
,
EXTRALARGE
=
40
}
...
...
@@ -183,7 +183,7 @@ Value of MEDIUM: 32
*
`remove(key)`
-返回并从映射中删除与指定键关联的条目
*
`remove(key, value)`
-仅当指定键映射到指定值并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.EnumMap
;
...
...
@@ -215,7 +215,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumMap:
{
SMALL
=
28
,
MEDIUM
=
32
,
LARGE
=
36
,
EXTRALARGE
=
40
}
...
...
@@ -228,8 +228,8 @@ Updated EnumMap: {LARGE=36, EXTRALARGE=40}
## 替换 EnumMap 元素
*
`replace(key, value)`
-用新的
`
值`
替换与指定的
`键
`
相关的值
*
`replace(key, old, new)`
-仅当
`旧`
值已与指定的
`
键
`
关联时,才用
`新`
值替换
`旧`
值。
*
`replace(key, value)`
-用新的
`
value`
替换与指定的
`key
`
相关的值
*
`replace(key, old, new)`
-仅当
`旧`
值已与指定的
`
key
`
关联时,才用
`新`
值替换
`旧`
值。
*
`replaceAll(function)`
-用指定的
`函数`
的结果替换映射的每个值
```
java
...
...
@@ -262,7 +262,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumMap:
{
SMALL
=
28
,
MEDIUM
=
32
,
LARGE
=
36
,
EXTRALARGE
=
40
}
...
...
@@ -276,7 +276,7 @@ EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}
sizes
.
replaceAll
((
key
,
oldValue
)
->
oldValue
+
3
);
```
在此,该方法访问
地图
的所有条目。 然后,它将所有值替换为
[
lambda 表达式
](
/java-programming/lambda-expression
"Java lambda"
)
提供的新值。
在此,该方法访问
映射
的所有条目。 然后,它将所有值替换为
[
lambda 表达式
](
/java-programming/lambda-expression
"Java lambda"
)
提供的新值。
* * *
...
...
@@ -291,7 +291,7 @@ sizes.replaceAll((key, oldValue) -> oldValue + 3);
* * *
## EnumSet 与 枚举
地图
## EnumSet 与 枚举
映射
[
EnumSet
](
/java-programming/enumset
"Java EnumSet Class"
)
和
`EnumMap`
类都提供用于存储枚举值的数据结构。 但是,它们之间存在一些主要差异。
...
...
docs/java/81.md
浏览文件 @
63fc36e3
...
...
@@ -24,7 +24,7 @@ Java 集合框架的`SortedMap`接口可对存储在映射中的键进行排序
## 如何使用 SortedMap?
要使用
`SortedMap`
,我们必须首先导入
`java.util.SortedMap`
包。 导入包后,可以按照以下方法创建排序的
地图
。
要使用
`SortedMap`
,我们必须首先导入
`java.util.SortedMap`
包。 导入包后,可以按照以下方法创建排序的
映射
。
```
java
// SortedMap implementation by TreeMap class
...
...
@@ -35,10 +35,10 @@ SortedMap<Key, Value> numbers = new TreeMap<>();
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
在这里,我们没有使用任何参数来创建排序的映射。 因此,
地图
将自然排序(升序)。
在这里,我们没有使用任何参数来创建排序的映射。 因此,
映射
将自然排序(升序)。
* * *
...
...
@@ -51,9 +51,9 @@ SortedMap<Key, Value> numbers = new TreeMap<>();
*
**比较器()**
-返回一个可用于对映射中的键进行排序的比较器
*
**firstKey()**
-返回已排序映射的第一个键
*
**lastKey()**
-返回已排序映射的最后一个键
*
**headMap(key)**
-返回其键号小于指定的
`
键`
的地图
的所有条目
*
**tailMap(key)**
-返回其键大于或等于指定的
`
键
`
的映射的所有条目
*
**subMap(key1,key2)**
-返回其键位于
`key1`
和
`key2`
之间的
地图
的所有条目,包括
`key1`
*
**headMap(key)**
-返回其键号小于指定的
`
key`
的映射
的所有条目
*
**tailMap(key)**
-返回其键大于或等于指定的
`
key
`
的映射的所有条目
*
**subMap(key1,key2)**
-返回其键位于
`key1`
和
`key2`
之间的
映射
的所有条目,包括
`key1`
要了解更多信息,请访问
[
Java SortedMap(Java 官方文档)
](
https://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html
)
。
...
...
docs/java/82.md
浏览文件 @
63fc36e3
...
...
@@ -4,7 +4,7 @@
#### 在本教程中,我们将通过一个示例学习 Java NavigableMap 接口及其方法。
Java 集合框架的
`NavigableMap`
接口提供了在
地图
条目之间导航的功能。
Java 集合框架的
`NavigableMap`
接口提供了在
映射
条目之间导航的功能。
它被视为
[
SortedMap
](
/java-programming/sortedmap
"Java SortedMap Interface"
)
的一种。
...
...
@@ -22,19 +22,19 @@ Java 集合框架的`NavigableMap`接口提供了在地图条目之间导航的
## 如何使用 NavigableMap?
在 Java 中,我们必须导入
`java.util.NavigableMap`
包才能使用
`NavigableMap`
。 导入包后,将按照以下方法创建可导航的
地图
。
在 Java 中,我们必须导入
`java.util.NavigableMap`
包才能使用
`NavigableMap`
。 导入包后,将按照以下方法创建可导航的
映射
。
```
java
// NavigableMap implementation by TreeMap class
NavigableMap
<
Key
,
Value
>
numbers
=
new
TreeMap
<>();
```
在上面的代码中,我们创建了一个名为
`TreeMap`
类的
`number`
的可导航
地图
。
在上面的代码中,我们创建了一个名为
`TreeMap`
类的
`number`
的可导航
映射
。
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
* * *
...
...
@@ -52,7 +52,7 @@ NavigableMap<Key, Value> numbers = new TreeMap<>();
### headMap(key,booleanValue)
`headMap()`
方法返回在指定的
`
键
`
(作为参数传递)之前与所有这些键关联的可导航映射的所有条目。
`headMap()`
方法返回在指定的
`
key
`
(作为参数传递)之前与所有这些键关联的可导航映射的所有条目。
`布尔值`
是可选参数。 其默认值为
`false`
。
...
...
@@ -62,7 +62,7 @@ NavigableMap<Key, Value> numbers = new TreeMap<>();
### tailMap(key,booleanValue)
`tailMap()`
方法返回与指定键
`
键`
(作为参数传递)之后的所有那些键相关联的可导航地图的所有条目,包括与指定
`键
`
相关的条目 。
`tailMap()`
方法返回与指定键
`
key`
(作为参数传递)之后的所有那些键相关联的可导航映射的所有条目,包括与指定
`key
`
相关的条目 。
`布尔值`
是可选参数。 其默认值为
`true`
。
...
...
@@ -84,10 +84,10 @@ NavigableMap<Key, Value> numbers = new TreeMap<>();
## 其他方法
`NavigableMap`
提供了各种可用于定位
地图
条目的方法。
`NavigableMap`
提供了各种可用于定位
映射
条目的方法。
*
**DescendingMap()**
-反转
地图
中的条目顺序
*
**DescendingKeyMap()**
-反转
地图
中按键的顺序
*
**DescendingMap()**
-反转
映射
中的条目顺序
*
**DescendingKeyMap()**
-反转
映射
中按键的顺序
*
**ceilingEntry()**
-返回其键大于或等于指定键的所有条目中键最低的条目
*
**ceilingKey()**
-返回大于或等于指定键的那些键中的最低键
*
**floorEntry()**
-返回其键小于或等于指定键的所有条目中具有最高键的条目
...
...
@@ -96,10 +96,10 @@ NavigableMap<Key, Value> numbers = new TreeMap<>();
*
**upperKey()**
-返回大于指定键的那些键中的最低键
*
**lowerEntry()**
-返回其键小于指定键的所有条目中具有最高键的条目
*
**lowerKey()**
-返回小于指定键的那些键中的最高键
*
**firstEntry()**
-返回
地图
的第一个条目(具有最低键的条目)
*
**lastEntry()**
-返回
地图
的最后一个条目(具有最高键的条目)
*
**pollFirstEntry()**
-返回并删除
地图
的第一个条目
*
**pollLastEntry()**
-返回并删除
地图
的最后一个条目
*
**firstEntry()**
-返回
映射
的第一个条目(具有最低键的条目)
*
**lastEntry()**
-返回
映射
的最后一个条目(具有最高键的条目)
*
**pollFirstEntry()**
-返回并删除
映射
的第一个条目
*
**pollLastEntry()**
-返回并删除
映射
的最后一个条目
要了解更多信息,请访问
[
Java NavigableMap(Java 官方文档)
](
https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html
)
。
...
...
docs/java/83.md
浏览文件 @
63fc36e3
...
...
@@ -26,14 +26,14 @@ TreeMap<Key, Value> numbers = new TreeMap<>();
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
* * *
## TreeMap 的方法
`TreeMap`
类提供了各种方法,可让我们在
地图
上执行操作。
`TreeMap`
类提供了各种方法,可让我们在
映射
上执行操作。
* * *
...
...
@@ -89,7 +89,7 @@ TreeMap of numbers: {Four=4, One=1, Six=6, Two=2}
*
`keySet()`
-返回树形图的所有键的集合
*
`values()`
-返回树形图的所有图的集合
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -115,7 +115,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
One
=
1
,
Three
=
3
,
Two
=
2
}
...
...
@@ -129,7 +129,7 @@ Values: [1, 3, 2]
*
`get()`
-返回与指定键关联的值。 如果找不到密钥,则返回 null。
*
`getOrDefault()`
-返回与指定键关联的值。 如果找不到密钥,则返回指定的默认值。
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -154,7 +154,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
One
=
1
,
Three
=
3
,
Two
=
2
}
...
...
@@ -171,7 +171,7 @@ Using getOrDefault(): 5
*
`remove(key)`
-返回并从 TreeMap 中删除与指定键关联的条目
*
`remove(key, value)`
-仅在指定键与指定值相关联并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -198,7 +198,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
One
=
1
,
Three
=
3
,
Two
=
2
}
...
...
@@ -211,11 +211,11 @@ Updated TreeMap: {One=1}
## 替换 TreeMap 元素
*
`replace(key, value)`
-用新的
`
值`
替换由指定的
`键
`
映射的值
*
`replace(key, value)`
-用新的
`
value`
替换由指定的
`key
`
映射的值
*
`replace(key, old, new)`
-仅当旧值已与指定键关联时,才用新值替换旧值
*
`replaceAll(function)`
-用指定的
`函数`
的结果替换映射的每个值
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -241,7 +241,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Original
TreeMap:
{
First
=
1
,
Second
=
2
,
Third
=
3
}
...
...
@@ -267,12 +267,12 @@ numbers.replaceAll((key, oldValue) -> oldValue + 2);
### 1.第一种和最后一种方法
*
`firstKey()`
-返回
地图
的第一个键
*
`firstKey()`
-返回
映射
的第一个键
*
`firstEntry()`
-返回映射的第一个键的键/值映射
*
`lastKey()`
-返回
地图
的最后一个键
*
`lastKey()`
-返回
映射
的最后一个键
*
`lastEntry()`
-返回映射的最后一个键的键/值映射
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -302,7 +302,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Second
=
2
,
Third
=
3
}
...
...
@@ -325,7 +325,7 @@ Last Entry: Third=3
*
**floorKey()**
-返回小于指定键的那些键中最大的键。 如果存在作为参数传递的键,它将返回该键。
*
**floorEntry()**
-返回与小于指定键的那些键中最大的键关联的条目。 如果存在作为参数传递的键,它将返回该键。
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -360,7 +360,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Fourth
=
6
,
Second
=
5
,
Third
=
4
}
...
...
@@ -381,10 +381,10 @@ Using floorEntry(): Fourth=6
### 3\. pollFirstEntry()和 pollLastEntry()方法
*
`pollFirstEntry()`
-返回并删除与
地图
的第一个键关联的条目
*
`pollLastEntry()`
-返回并删除与
地图
的最后一个键关联的条目
*
`pollFirstEntry()`
-返回并删除与
映射
的第一个键关联的条目
*
`pollLastEntry()`
-返回并删除与
映射
的最后一个键关联的条目
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -410,7 +410,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Second
=
2
,
Third
=
3
}
...
...
@@ -425,13 +425,13 @@ Updated TreeMap: {Second=2}
**headMap(key,booleanValue)**
`headMap()`
方法返回指定的
`
键
`
(作为参数传递)之前的树图的所有键/值对。
`headMap()`
方法返回指定的
`
key
`
(作为参数传递)之前的树图的所有键/值对。
`布尔值`
参数是可选的。 其默认值为
`false`
。
如果
`true`
作为
`布尔值`
传递,则该方法还包括
`key`
的键/值对,该键/值对作为参数传递。
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -457,7 +457,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Fourth
=
4
,
Second
=
2
,
Third
=
3
}
...
...
@@ -469,13 +469,13 @@ With boolean value: {First=1, Fourth=4}
**tailMap(key,booleanValue)**
`tailMap()`
方法返回从指定的
`
键
`
(作为参数传递)开始的树形图的所有键/值对。
`tailMap()`
方法返回从指定的
`
key
`
(作为参数传递)开始的树形图的所有键/值对。
`布尔值`
是可选参数。 其默认值为
`true`
。
如果
`false`
作为
`布尔值`
传递,则该方法不包括指定的
`key`
的键/值对。
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -501,7 +501,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Fourth
=
4
,
Second
=
2
,
Third
=
3
}
...
...
@@ -521,7 +521,7 @@ With boolean value: {Third=3}
如果将
`true`
作为
`bV2`
传递,则该方法返回与
`k1`
和
`k2`
之间的键相关联的所有条目,包括
`k2`
的条目 ]。
For example,
例如:
```
java
import
java.util.TreeMap
;
...
...
@@ -547,7 +547,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
First
=
1
,
Fourth
=
2
,
Second
=
2
,
Third
=
3
}
...
...
@@ -615,7 +615,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeMap:
{
Third
=
3
,
Second
=
2
,
Fourth
=
4
,
First
=
1
}
...
...
docs/java/84.md
浏览文件 @
63fc36e3
...
...
@@ -35,8 +35,8 @@ CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
* * *
...
...
@@ -50,7 +50,7 @@ CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
*
**compute()**
-计算指定键及其先前映射值的条目(键/值映射)。
*
**computeIfAbsent()**
-如果键尚未与任何值映射,则使用指定函数为指定键计算一个值。
*
**computeIfPresent()**
-如果已使用指定值映射键,则为指定键计算新条目(键/值映射)。
*
**forEach()**
-访问
地图
的所有条目并执行指定的操作。
*
**forEach()**
-访问
映射
的所有条目并执行指定的操作。
*
**merge()**
-如果键已经映射到某个特定值,则将新的指定值与指定键的旧值合并。 如果该键尚未映射,则该方法只需将指定的值与我们的键关联。
要了解更多信息,请访问
[
Java ConcurrentMap(Java 官方文档)
](
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html#compute-K-java.util.function.BiFunction-
)
。
...
...
docs/java/85.md
浏览文件 @
63fc36e3
...
...
@@ -14,19 +14,19 @@ Java 集合框架的`ConcurrentHashMap`类提供了线程安全的映射。 也
## 创建一个 ConcurrentHashMap
为了创建并发的哈希
图,我们必须首先导入
`java.util.concurrent.ConcurrentHashMap`
包。 导入包后,就可以在 Java 中创建并发哈希图
。
为了创建并发的哈希
映射,我们必须首先导入
`java.util.concurrent.ConcurrentHashMap`
包。 导入包后,就可以在 Java 中创建并发哈希映射
。
```
java
// ConcurrentHashMap with capacity 8 and load factor 0.6
ConcurrentHashMap
<
Key
,
Value
>
numbers
=
new
ConcurrentHashMap
<>(
8
,
0.6f
);
```
在上面的代码中,我们创建了一个名为
`number`
的并发哈希
图
。
在上面的代码中,我们创建了一个名为
`number`
的并发哈希
映射
。
这里,
*
`
键`
-用于关联地图
中每个元素(值)的唯一标识符
*
`
值`
-地图
中与按键相关联的元素
*
`
key`
-用于关联映射
中每个元素(值)的唯一标识符
*
`
value`
-映射
中与按键相关联的元素
注意部分
`new ConcurrentHashMap<>(8, 0.6)`
。 在此,第一个参数是
**容量**
,第二个参数是
**loadFactor**
。
...
...
@@ -35,7 +35,7 @@ ConcurrentHashMap<Key, Value> numbers = new ConcurrentHashMap<>(8, 0.6f);
**默认容量和负载系数**
可以在不定义其容量和负载因子的情况下创建并发哈希
图
。 例如,
可以在不定义其容量和负载因子的情况下创建并发哈希
映射
。 例如,
```
java
// ConcurrentHashMap with default capacity and load factor
...
...
@@ -44,12 +44,12 @@ ConcurrentHashMap<Key, Value> numbers1 = new ConcurrentHashMap<>();
默认,
*
地图
的容量将为 16
*
映射
的容量将为 16
*
负载系数将为 0.75
* * *
## 从其他
地图
创建 ConcurrentHashMap
## 从其他
映射
创建 ConcurrentHashMap
这是我们如何创建包含其他映射的所有元素的并发哈希映射。
...
...
@@ -85,7 +85,7 @@ ConcurrentHashMap: {Four=4, Two=2, Three=3}
## ConcurrentHashMap 的方法
`ConcurrentHashMap`
类提供允许我们在
地图
上执行各种操作的方法。
`ConcurrentHashMap`
类提供允许我们在
映射
上执行各种操作的方法。
* * *
...
...
@@ -124,7 +124,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap
of
even
numbers:
{
Six
=
6
,
Four
=
4
,
Two
=
2
}
...
...
@@ -138,10 +138,10 @@ ConcurrentHashMap of numbers: {Six=6, One=1, Four=-4, Two=2}
**1.使用 entrySet(),keySet()和 values()**
*
`entrySet()`
-返回一组所有键/值映射的映射
*
`keySet()`
-返回
地图
的所有键的集合
*
`keySet()`
-返回
映射
的所有键的集合
*
`values()`
-返回一组所有映射值
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -167,7 +167,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -181,7 +181,7 @@ Values: [1, 2, 3]
*
`get()`
-返回与指定键关联的值。 如果找不到密钥,则返回
`null`
。
*
`getOrDefault()`
-返回与指定键关联的值。 如果找不到密钥,则返回指定的默认值。
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -206,7 +206,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -221,7 +221,7 @@ Using getOrDefault(): 5
*
`remove(key)`
-返回并从映射中删除与指定键关联的条目
*
`remove(key, value)`
-仅当指定键映射到指定值并返回布尔值时,才从映射中删除条目
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -248,7 +248,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -272,7 +272,7 @@ Updated ConcurrentHashMap: {One=1}
*
`parallelismThreshold`
-它指定在映射中有多少个元素运算之后并行执行。
*
`转换器`
-在将数据传递到指定功能之前,它将转换数据。
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -296,7 +296,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -318,13 +318,13 @@ Values are 1, 2, 3,
### 2\. search()方法
`search()`
方法基于指定的函数搜索
地图
并返回匹配的条目。
`search()`
方法基于指定的函数搜索
映射
并返回匹配的条目。
在此,指定的功能确定要搜索的条目。
它还包括一个可选参数
`parallelThreshold`
。 并行阈值指定在映射中有多少个元素之后并行执行该操作。
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -346,7 +346,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -363,14 +363,14 @@ Searched value: Three
### 3\. reduce()方法
`reduce()`
方法累积(聚集)映射中的每个条目。 当我们需要所有条目来执行一项共同任务(例如添加
地图
的所有值)时,可以使用此方法。
`reduce()`
方法累积(聚集)映射中的每个条目。 当我们需要所有条目来执行一项共同任务(例如添加
映射
的所有值)时,可以使用此方法。
It includes two parameters.
*
`parallelismThreshold`
-它指定在映射了几个元素之后,并行执行映射中的操作。
*
`转换器`
-在将数据传递到指定功能之前,它将转换数据。
For example,
例如:
```
java
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -392,7 +392,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ConcurrentHashMap:
{
One
=
1
,
Two
=
2
,
Three
=
3
}
...
...
@@ -431,6 +431,6 @@ Here,
## 为什么选择 ConcurrentHashMap?
*
`ConcurrentHashMap`
类允许多个线程同时访问其条目。
*
默认情况下,并发哈希
图
分为
**16 个段**
。 这就是为什么允许 16 个线程同时并发修改映射的原因。 但是,任何数量的线程一次都可以访问该映射。
*
默认情况下,并发哈希
映射
分为
**16 个段**
。 这就是为什么允许 16 个线程同时并发修改映射的原因。 但是,任何数量的线程一次都可以访问该映射。
*
如果指定的键已经存在,则
`putIfAbsent()`
方法将不会覆盖映射中的条目。
*
它提供自己的同步。
\ No newline at end of file
docs/java/87.md
浏览文件 @
63fc36e3
...
...
@@ -161,7 +161,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Set
using
TreeSet:
[
1
,
2
,
3
]
...
...
docs/java/88.md
浏览文件 @
63fc36e3
...
...
@@ -119,7 +119,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet:
[
2
,
5
,
6
]
...
...
@@ -133,7 +133,7 @@ HashSet using Iterator: 2, 5, 6,
*
`remove()`
-从集合中删除指定的元素
*
`removeAll()`
-从集合中删除所有元素
For example,
例如:
```
java
import
java.util.HashSet
;
...
...
@@ -156,7 +156,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet:
[
2
,
5
,
6
]
...
...
@@ -198,7 +198,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet1:
[
2
,
4
]
...
...
@@ -234,7 +234,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet1:
[
2
,
3
]
...
...
@@ -272,7 +272,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet1:
[
2
,
3
,
5
]
...
...
@@ -310,7 +310,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
HashSet1:
[
1
,
2
,
3
,
4
]
...
...
docs/java/89.md
浏览文件 @
63fc36e3
...
...
@@ -84,7 +84,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Empty
EnumSet
:
[]
...
...
@@ -119,7 +119,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumSet:
[
MEDIUM
,
LARGE
,
EXTRALARGE
]
...
...
@@ -152,7 +152,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumSet1:
[
MEDIUM
]
...
...
@@ -202,7 +202,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumSet
using
add
():
[
MEDIUM
]
...
...
@@ -245,7 +245,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumSet:
SMALL
,
MEDIUM
,
LARGE
,
EXTRALARGE
,
...
...
@@ -263,7 +263,7 @@ EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,
*
`remove()`
-从枚举集中删除指定的元素
*
`removeAll()`
-从枚举集中删除所有元素
For example,
例如:
```
java
import
java.util.EnumSet
;
...
...
@@ -291,7 +291,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
EnumSet:
[
SMALL
,
MEDIUM
,
LARGE
,
EXTRALARGE
]
...
...
docs/java/9.md
浏览文件 @
63fc36e3
...
...
@@ -79,7 +79,7 @@ class HelloWorld {
}
```
**
Output**
:
**
输出**
:
:
```
java
Hello
,
World
!
...
...
docs/java/90.md
浏览文件 @
63fc36e3
...
...
@@ -118,7 +118,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet:
[
2
,
4
,
6
]
...
...
@@ -157,7 +157,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet:
[
2
,
5
,
6
]
...
...
@@ -176,7 +176,7 @@ LinkedHashSet using Iterator: 2, 5, 6,
*
`remove()`
-从链接的哈希集中删除指定的元素
*
`removeAll()`
-从链接的哈希集中删除所有元素
For example,
例如:
```
java
import
java.util.LinkedHashSet
;
...
...
@@ -199,7 +199,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet:
[
2
,
5
,
6
]
...
...
@@ -241,7 +241,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet1:
[
2
,
4
]
...
...
@@ -277,7 +277,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet1:
[
2
,
3
]
...
...
@@ -315,7 +315,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet1:
[
2
,
3
,
5
]
...
...
@@ -353,7 +353,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
LinkedHashSet1:
[
1
,
2
,
3
,
4
]
...
...
docs/java/93.md
浏览文件 @
63fc36e3
...
...
@@ -102,7 +102,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
5
,
6
]
...
...
@@ -116,7 +116,7 @@ TreeSet using Iterator: 2, 5, 6,
*
`remove()`
-从集合中删除指定的元素
*
`removeAll()`
-从集合中删除所有元素
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -140,7 +140,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
5
,
6
]
...
...
@@ -159,7 +159,7 @@ Are all elements removed? true
*
`first()`
-返回集合的第一个元素
*
`last()`
-返回集合的最后一个元素
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -183,7 +183,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
5
,
6
]
...
...
@@ -200,7 +200,7 @@ Last Number: 6
*
**ceiling(element)**
-返回大于指定
`元素`
的那些元素中的最低元素。 如果通过的
`元素`
存在于树集中,则它返回作为参数传递的
`element`
。
*
**floor(element)**
-返回小于指定
`element`
的那些元素中最大的元素。 如果传递的
`元素`
存在于树集中,则它返回作为参数传递的
`element`
。
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -230,7 +230,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
4
,
5
,
6
]
...
...
@@ -247,7 +247,7 @@ Using floor: 2
*
`pollFirst()`
-返回并从集合中删除第一个元素
*
`pollLast()`
-返回并从集合中删除最后一个元素
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -272,7 +272,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
4
,
5
,
6
]
...
...
@@ -295,7 +295,7 @@ New TreeSet: [4, 5]
如果
`true`
作为
`布尔值`
传递,则该方法返回指定元素之前的所有元素,包括指定元素。
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -318,7 +318,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
4
,
5
,
6
]
...
...
@@ -336,7 +336,7 @@ Using headSet with boolean value: [2, 4, 5]
如果
`false`
作为
`布尔值`
传递,则该方法返回指定的
`元素`
之后的所有元素,而不包括指定的
`元素`
。
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -359,7 +359,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
4
,
5
,
6
]
...
...
@@ -379,7 +379,7 @@ Using tailSet with boolean value: [5, 6]
如果
`true`
作为
`bv2`
传递,则该方法返回
`e1`
和
`e2`
之间的所有元素,包括
`e1`
。
For example,
例如:
```
java
import
java.util.TreeSet
;
...
...
@@ -402,7 +402,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
2
,
4
,
5
,
6
]
...
...
@@ -446,7 +446,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet1:
[
2
,
4
]
...
...
@@ -483,7 +483,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet1:
[
2
,
4
]
...
...
@@ -521,7 +521,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet1:
[
2
,
4
]
...
...
@@ -559,7 +559,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet1:
[
1
,
2
,
3
,
4
]
...
...
@@ -637,7 +637,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
TreeSet:
[
Zebra
,
Horse
,
Dog
,
Cat
]
...
...
docs/java/94.md
浏览文件 @
63fc36e3
...
...
@@ -83,7 +83,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Sorted
ArrayList:
[
1
,
2
,
3
]
...
...
@@ -145,7 +145,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList1:
[
1
,
2
]
...
...
@@ -183,7 +183,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
The
position
of
3
is
2
.
...
...
@@ -200,7 +200,7 @@ The position of 3 is 2.
*
`frequency()`
-返回元素在集合中存在的次数计数
*
`disjoint()`
-检查两个集合是否包含某些公共元素
For example,
例如:
```
java
import
java.util.Collections
;
...
...
@@ -230,7 +230,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList1:
[
1
,
2
,
3
,
2
]
...
...
@@ -268,7 +268,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
Minimum
Element:
1
...
...
docs/java/96.md
浏览文件 @
63fc36e3
...
...
@@ -108,7 +108,7 @@ class Main {
}
```
**
Output**
**
输出**
:
```
java
ArrayList:
[
1
,
3
,
2
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录