提交 63fc36e3 编写于 作者: W wizardforcel

2020-07-01 17:22:52

上级 bee8c003
......@@ -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:
......
......@@ -30,7 +30,7 @@ FileOutputStream output = new FileOutputStream(String path);
在这里,我们创建了一个输出流,该输出流将链接到`路径`指定的文件。
另外,``是可选的布尔参数。 如果将其设置为`true`,则新数据将附加到文件中现有数据的末尾。 否则,新数据将覆盖文件中的现有数据。
另外,`value`是可选的布尔参数。 如果将其设置为`true`,则新数据将附加到文件中现有数据的末尾。 否则,新数据将覆盖文件中的现有数据。
**2.使用文件**的对象
......
......@@ -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,
......
......@@ -137,7 +137,7 @@ class Main {
}
```
**Output**
**输出**
```java
Data using toByteArray(): This is data.
......
......@@ -172,7 +172,7 @@ class Main {
}
```
**Output**
**输出**
```java
Dog Name: Tyson
......
......@@ -168,7 +168,7 @@ class Main {
}
```
**Output**
**输出**
```java
Dog Name: Tyson
......
......@@ -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.
......
......@@ -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
......
......@@ -150,7 +150,7 @@ class Main {
}
```
**Output**
**输出**
```java
The character encoding of input1: Cp1252
......
......@@ -144,7 +144,7 @@ class Main {
}
```
**Output**
**输出**
```java
The character encoding of input1: Cp1252
......
......@@ -159,7 +159,7 @@ public class Main {
}
```
**Output**
**输出**
```java
Data after skipping 5 characters:
......
......@@ -128,7 +128,7 @@ public class Main {
}
```
**Output**
**输出**
```java
Original data: This is the text read from the StringReader
......
......@@ -173,7 +173,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
Enter operator (either +, -, * or /): *
......
......@@ -134,7 +134,7 @@ public class Main {
}
```
**Output**
**输出**
```java
StringBuffer: This is the original data
......
......@@ -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
......
......@@ -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
......
......@@ -95,7 +95,7 @@ class Main {
}
```
**Output**
**输出**
```java
ArrayList: [5, 6]
......
......@@ -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:
......
......@@ -248,7 +248,7 @@ class Main {
}
```
**Output**
**输出**
```java
The File is deleted.
......
......@@ -102,7 +102,7 @@ class Main {
}
```
**Output**
**输出**
```java
The value of a: 23
......
......@@ -112,7 +112,7 @@ class Number {
}
```
**Output**:
**输出**:
```java
Sum = 500500
......
......@@ -58,7 +58,7 @@ class AssignmentOperator {
}
```
**Output**:
**输出**:
```java
a
......@@ -123,7 +123,7 @@ class EnhancedForLoop {
}
```
**Output**:
**输出**:
```java
Sum = 19
......
......@@ -114,7 +114,7 @@ class AssignmentOperator {
}
```
**Output**:
**输出**:
```java
Sum = 5050
......@@ -204,7 +204,7 @@ class Sum {
}
```
**Output**:
**输出**:
```java
Enter a number: 2.5
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
# 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
......@@ -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]]
......
......@@ -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
......@@ -53,7 +53,7 @@ class ClassName {
}
```
For example,
例如:
```java
class Lamp {
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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.
......
......@@ -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 + 3i
......@@ -301,7 +301,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
Before passing this to addTwo() method:
......
......@@ -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
......
......@@ -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
......
......@@ -92,7 +92,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
I am an animal.
......@@ -144,7 +144,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
I am a dog.
......
......@@ -109,7 +109,7 @@ class Main {
}
```
**Output**
**输出**
```java
I am a dog
......@@ -266,7 +266,7 @@ class Main {
}
```
**Output**
**输出**
```java
Type: Animal
......
......@@ -130,7 +130,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
Bark bark.
......@@ -211,7 +211,7 @@ class Main {
}
```
**Output**:
**输出**:
```java
Bark bark
......
......@@ -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
......
......@@ -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.
......
......@@ -108,7 +108,7 @@ class Teacher extends Person {
}
```
**Output**
**输出**
```java
I am a teacher
......
......@@ -174,7 +174,7 @@ public class Main {
}
```
**Output**:
**输出**:
```java
Engine Type for 8WD= Bigger
......@@ -239,7 +239,7 @@ public class Main {
}
```
**Output**:
**输出**:
```java
Total Ports = 3
......
......@@ -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
......
......@@ -105,7 +105,7 @@ class Main {
}
```
**Output**
**输出**
```java
Inside an anonymous class.
......
......@@ -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
......
......@@ -66,7 +66,7 @@ class Main {
}
```
**Output**
**输出**
```java
The size is medium.
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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]
......
......@@ -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 {
......
......@@ -92,7 +92,7 @@ class Main {
}
```
**Output**
**输出**
```java
Exception in thread "main" java.lang.AssertionError: There are only 2 weekends in a week
......
......@@ -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
......
......@@ -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")
* * *
......
......@@ -135,7 +135,7 @@ class Main {
}
```
**Output**
**输出**
```java
List: [1, 2, 3]
......
......@@ -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]
......
......@@ -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]
......
......@@ -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]
......
......@@ -150,7 +150,7 @@ class Main {
}
```
**Output**
**输出**
```java
Queue: [1, 5, 2]
......
......@@ -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]
......
......@@ -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
......
# 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 双端`Queue`接口](/java-programming/deque "Java Deque interface")
* [Java `Deque`接口](/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`接口。 但是,它们之间存在一些差异。
......
# 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 双端`Queue`接口](https://www.programiz.com/java-programming/deque "Java Deque Interface")
* [Java `Deque`接口](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`接口。 但是,它们之间存在一些差异。
......
# 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`被视为**线程安全的**集合。 这是因为它在多线程操作中可能会有所帮助。
......
# 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`。 因此,我们必须将其封装在[H​​TG2] 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`使用数组作为其内部存储。
......
# 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`。 因此,我们必须将其封装在[H​​TG2] 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`使用链接列表作为其内部存储。
......
# Java 地图
\ No newline at end of file
# Java 映射
\ No newline at end of file
# 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}
......
# 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}
......
# 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`接口。 但是,它们之间存在一些差异。
......
# 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
......@@ -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`类都提供用于存储枚举值的数据结构。 但是,它们之间存在一些主要差异。
......
......@@ -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)
......
......@@ -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)
......
......@@ -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}
......
......@@ -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-)
......
......@@ -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
......@@ -161,7 +161,7 @@ class Main {
}
```
**Output**
**输出**
```java
Set using TreeSet: [1, 2, 3]
......
......@@ -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]
......
......@@ -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]
......
......@@ -79,7 +79,7 @@ class HelloWorld {
}
```
**Output**:
**输出**:
```java
Hello, World!
......
......@@ -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]
......
......@@ -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]
......
......@@ -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
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册