提交 ac85f255 编写于 作者: W wizardforcel

2019-11-27 12:44:49

上级 71a47fc8
......@@ -6,13 +6,13 @@
## 解释
Java AWT 包提供了许多不同的布局,例如边框布局,框布局,流布局,网格布局等。这些布局管理器用于以特定方式排列组件。 布局用于按特定顺序管理组件。 以下是 Java 中一些常用布局的描述和示例。
Java AWT 包提供了许多不同的布局,例如边框布局,框布局,流布局,网格布局等。这些布局管理器用于以特定方式排列组件。 布局用于按特定顺序管理组件。 以下是 Java 中一些常用布局的描述和示例。
## 边框布局
边框布局是最常用的布局之一。 这是 JFrame 中的默认布局。 它可以将组件定位在五个不同的区域,例如顶部,底部,左侧,右侧和中心。 在边框布局中,每个区域仅包含一个组件。 所有可用空间都放在中间。
边框布局是最常用的布局之一。 这是`JFrame`中的默认布局。 它可以将组件定位在五个不同的区域,例如顶部,底部,左侧,右侧和中心。 在边框布局中,每个区域仅包含一个组件。 所有可用空间都放在中间。
使用:使用边框布局初始化内容窗格,并通过 add 方法向其中添加组件,并将布局作为参数。
使用:使用边框布局初始化内容窗格,并通过`add`方法向其中添加组件,并将布局作为参数。
以下示例显示以边框布局排列的组件。
......@@ -56,13 +56,13 @@ public class BorderLayoutExample {
边框布局
## 流布局
## 流布局
布局是常用的布局。 这是 JPanel 使用的默认布局。 它用于将组件排成一行或一行,例如从左到右或从右到左。 如果没有剩余空间,则它将组件排成一行。 Align 属性确定组件的对齐方式,如左,右,居中等。
式布局是常用的布局。 这是`JPanel`使用的默认布局。 它用于将组件排成一行或一行,例如从左到右或从右到左。 如果没有剩余空间,则它将组件排成一行。 Align 属性确定组件的对齐方式,如左,右,居中等。
使用:使用 JFrame.setLayout(layout)设置 JFrame 布局,将流布局作为参数传递。
使用:使用`JFrame.setLayout(layout)`设置`JFrame`布局,将流式布局作为参数传递。
下例显示以流布局排列的组件
下例显示以流布局排列的组件
```java
package javatutorial.net;
......@@ -102,17 +102,17 @@ public class FlowLayoutExample {
```
这是流布局的示例
这是流布局的示例
![Flow Layout](img/ba3ea537424ab3ee9c64e8575cfd392f.jpg)
布局
布局
## 网格布局
网格布局将组件排列在矩形网格中。 它在单元中排列组件,每个单元具有相同的大小。 组件放置在列和行中。 GridLayout(int 行,int 列)采用两个参数,即 column 是 row
网格布局将组件排列在矩形网格中。 它在单元中排列组件,每个单元具有相同的大小。 组件放置在列和行中。 `GridLayout(int row, int column)`采用两个参数,即`column``row`
使用:使用 JFrame.setLayout(layout)设置 JFrame 布局,将网格布局作为参数传递。
使用:使用`JFrame.setLayout(layout)`设置`JFrame`布局,将网格布局作为参数传递。
下面的示例显示以网格布局(2 行 3 列)排列的组件。
......
......@@ -2,15 +2,15 @@
> 原文: [https://javatutorial.net/display-text-and-graphics-java-jframe](https://javatutorial.net/display-text-and-graphics-java-jframe)
本教程介绍了如何在 [JFrmae](https://javatutorial.net/swing-jframe-basics-create-jframe) 上显示文本和图形,例如线条,圆形和矩形。
本教程介绍了如何在[`JFrmae`](https://javatutorial.net/swing-jframe-basics-create-jframe) 上显示文本和图形,例如线条,圆形和矩形。
## 背景
Java 为我们提供了一种使用 GUI 绘制文本和图形的简便方法。 AWT 包中的 Graphics 类允许我们绘制基本的几何类型,如直线和圆。 除此之外,它还可以显示文本。 本教程将说明用于绘制形状和文本的 Graphics 类的各种功能。
Java 为我们提供了一种使用 GUI 绘制文本和图形的简便方法。 AWT 包中的`Graphics`类允许我们绘制基本的几何类型,如直线和圆。 除此之外,它还可以显示文本。 本教程将说明用于绘制形状和文本的`Graphics`类的各种功能。
## 绘制直线
Graphics 类提供了 Graphics.drawline(int x1,int y1,int x2,int y2)方法在屏幕上绘制一条线。 x1 是线的第一点的 x 坐标,而 y1 是线的第一点的 y 坐标。 类似地,x2 和 y2 是第二个线点的坐标。
`Graphics`类提供了`Graphics.drawline(int x1, int y1, int x2, int y2)`方法在屏幕上绘制一条线。 `x1`是线的第一点的`x`坐标,而`y1`是线的第一点的`y`坐标。 类似地,`x2``y2`是第二个线点的坐标。
这是显示一行的程序。
......@@ -47,7 +47,7 @@ public class JFrmaeGraphics extends JPanel{
## 绘制圆
您可以借助 Graphics.drawOval(int x,int y,int width,int height)方法绘制圆形和椭圆形。 此功能有两个目的。 X 和 y 是位置,屏幕上的起点以及宽度和高度是设置椭圆形或圆形的宽度和高度的参数。 对于圆设置相同的宽度和高度。
您可以借助`Graphics.drawOval(int x, int y, int width, int height)`方法绘制圆形和椭圆形。 此功能有两个目的。`x``y`是位置,屏幕上的起点以及宽度和高度是设置椭圆形或圆形的宽度和高度的参数。 对于圆设置相同的宽度和高度。
此处,程序显示在屏幕上绘制圆圈的代码。
......@@ -83,7 +83,7 @@ public class JFrmaeGraphics extends JPanel{
## 绘制矩形
Graphics 类提供了 Graphics.drawRect(int x,int y,int width,int height)方法来绘制矩形或正方形。 前两个参数显示起点,后两个参数显示矩形或正方形的宽度和高度。 对于正方形,宽度和高度应相同。
`Graphics`类提供了`Graphics.drawRect(int x, int y, int width, int height)`方法来绘制矩形或正方形。 前两个参数显示起点,后两个参数显示矩形或正方形的宽度和高度。 对于正方形,宽度和高度应相同。
这是绘制矩形的代码
......@@ -119,7 +119,7 @@ public class JFrmaeGraphics extends JPanel{
## 绘制多边形
绘制多边形非常容易.Graphics 类提供了 Graphics.drawPolygon(int [],int [],int points)的方法。 第一个参数是包含多边形所有点的 x 值的数组,第二个也是包含多边形所有点的 y 值的数组,而第三个参数显示点的数量。
绘制多边形非常容易`Graphics`类提供了`Graphics.drawPolygon(int [], int [], int points)`的方法。 第一个参数是包含多边形所有点的`x`值的数组,第二个也是包含多边形所有点的`y`值的数组,而第三个参数显示点的数量。
```java
package javatutorial.net;
......@@ -156,7 +156,7 @@ public class JFrmaeGraphics extends JPanel{
## 绘制文字
要在屏幕上绘制文本,可以使用 Graphics.drawText(string text,int x,int y)方法。 第一个参数是您要显示的字符串,最后两个参数是此文本将开始的 point 的值。
要在屏幕上绘制文本,可以使用`Graphics.drawText(string text, int x, int y)`方法。 第一个参数是您要显示的字符串,最后两个参数是此文本将开始的点的值。
这是示例代码
......@@ -192,7 +192,7 @@ public class JFrmaeGraphics extends JPanel{
## 绘制图像
Graphics 类提供了 Graphics.drawImage(Image,int x,int y,ImageOberver 观察器)方法来绘制图像。 虽然 Image 是类,但是您可以使用 getDafaultKit()方法获取图像的地址。 将图像放置在项目的文件夹中。
Graphics 类提供了`Graphics.drawImage(Image, int x, int y, ImageOberver observer)`方法来绘制图像。 虽然`Image`是类,但是您可以使用`getDafaultKit()`方法获取图像的地址。 将图像放置在项目的文件夹中。
这是示例代码
......
......@@ -2,21 +2,21 @@
> 原文: [https://javatutorial.net/jframe-buttons-listeners-text-fields](https://javatutorial.net/jframe-buttons-listeners-text-fields)
本教程说明了如何通过使用按钮,监听器和文本区域与 [JFrame](https://javatutorial.net/swing-jframe-basics-create-jframe) 进行交互。
本教程说明了如何通过使用按钮,监听器和文本区域与[`JFrame`](https://javatutorial.net/swing-jframe-basics-create-jframe)进行交互。
## 背景
交互性是用户在每个应用程序中想要的。 为了在程序中增加交互性,Java 为我们提供了一种非常简单的方法。 Javax.swing.JButton calss 为我们提供了一种添加按钮的方法,并且在单击按钮后发生事件。 同样,借助 javax.swing.JTextfield 的帮助,我们可以向 [JFrame](https://javatutorial.net/swing-jframe-basics-create-jframe) 添加文本区域。
交互性是用户在每个应用程序中想要的。 为了在程序中增加交互性,Java 为我们提供了一种非常简单的方法。`Javax.swing.JButton`类为我们提供了一种添加按钮的方法,并且在单击按钮后发生事件。 同样,借助`javax.swing.JTextfield`的帮助,我们可以向[`JFrame`](https://javatutorial.net/swing-jframe-basics-create-jframe)添加文本区域。
## 添加文本区域
您可以使用 JTextfield()方法创建一个文本区域。 此类具有许多构造函数,如 JTextField():构造一个新的文本区域
您可以使用`JTextfield()`方法创建一个文本区域。 此类具有许多构造函数,如`JTextField()`:构造一个新的文本区域
JTextField(字符串文本):使用指定的文本构造一个文本区域。
`JTextField(String text)`:使用指定的文本构造一个文本区域。
JTextField(字符串文本,int 列):它使用指定的文本和列数创建一个新的文本区域。
`JTextField(String text, int colomn)`:它使用指定的文本和列数创建一个新的文本区域。
以下程序显示了向 JFrame 添加文本区域的示例。
以下程序显示了向`JFrame`添加文本区域的示例。
```java
package javatutorial.net;
......@@ -50,29 +50,29 @@ public class Example {
![TextField example ](img/76dd90fa2fd7e4b1a84d8e012c3e2ad6.jpg)
TextField 示例
文本区域示例
您可以使用 JTextfield 提供的不同方法进行自定义。
您可以使用`JTextfield`提供的不同方法进行自定义。
JTextField.setfont(字体 f); 它设置文本的字体
`JTextField.setfont(Font f)`它设置文本的字体
JTextField.setHorizo​​ntalAlignment(int alignment); 它设置文本的水平对齐方式。
`JTextField.setHorizo​​ntalAlignment(int alignment)`它设置文本的水平对齐方式。
JTextFieldsetScrollOffset(int scrolloffset); 它以像素为单位设置滚动偏移量。
`JTextField.setScrollOffset(int scrolloffset)`它以像素为单位设置滚动偏移量。
## 添加按钮并应用动作监听器
同样,您可以在 JFrame 中添加按钮。 JButton 为我们提供了一种添加按钮和动作监听器的简便方法。 它有很多像
同样,您可以在`JFrame`中添加按钮。 `JButton`为我们提供了一种添加按钮和动作监听器的简便方法。 它有很多像
JButton(); 创建一个没有文本且没有图标的按钮。
`JButton()`创建一个没有文本且没有图标的按钮。
JButton(String text):创建一个带有指定文本的按钮。
`JButton(String text)`:创建一个带有指定文本的按钮。
JButton(图标图示); 创建一个带有指定图标的按钮。
`JButton(Icon icon)`创建一个带有指定图标的按钮。
JButton(字符串文本,图标图标); 创建带有指定文本和图标的按钮。
`JButton(String text, Icon icon)`创建带有指定文本和图标的按钮。
这是带有图像图标的 JButton 的简单示例。
这是带有图像图标的`JButton`的简单示例。
```java
package javatutorial.net;
......@@ -107,7 +107,7 @@ public class SimpleJButton {
## 添加动作监听器
JButton 上添加动作监听器非常简单。 JButton 类提供方法 JButton.addActionListener(),该方法实现重写方法 actionPerformed()。 在下面的示例中,我编写了一个简单的程序,要求用户输入名称,当用户单击“提交”按钮时,将显示一条消息“名称已提交。”。 这是代码。
`JButton`上添加动作监听器非常简单。 `JButton`类提供方法`JButton.addActionListener()`,该方法实现重写方法`actionPerformed()`。 在下面的示例中,我编写了一个简单的程序,要求用户输入名称,当用户单击“提交”按钮时,将显示一条消息“名称已提交”。这是代码。
```java
package javatutorial.net;
......@@ -167,6 +167,6 @@ public class SimpleJButton {
![Action Listener](img/b3dbd012158b75113a5488532dfb1c25.jpg)
动听众
为监听器
这是完整代码的[链接](https://github.com/NeelumAyub/Tutorials/tree/master/InteractiveJFrame),您可以下载。
\ No newline at end of file
......@@ -6,7 +6,7 @@
## 为什么需要 Java JAR 文件?
JAR 或 Java 存档文件是一个可执行文件,带有与元数据和资源相关的库的集合。 它实际上是一个扩展名为.JAR 的 ZIP 文件。 由于它还包含编译后的主类(.class 格式),因此即使不使用 [IDE](https://javatutorial.net/choose-your-java-ide-eclipse-netbeans-and-intellij-idea) 也可以执行压缩和使用代码,而无需执行。 它用于通过网络分发软件程序。
JAR 或 Java 存档文件是一个可执行文件,带有与元数据和资源相关的库的集合。 它实际上是一个扩展名为`.JAR`的 ZIP 文件。 由于它还包含编译后的主类(`.class`格式),因此即使不使用 [IDE](https://javatutorial.net/choose-your-java-ide-eclipse-netbeans-and-intellij-idea) 也可以执行压缩和使用代码,而无需执行。 它用于通过网络分发软件程序。
因此,请按照本教程学习如何使用 Maven 创建 Java JAR 文件以及如何设置项目的依赖项。 下一节逐步说明所有要求和准则。
......@@ -20,33 +20,33 @@ JAR 或 Java 存档文件是一个可执行文件,带有与元数据和资源
如果您没有 Maven,请安装适用于 Eclipse 的 Maven 插件。 您可以使用 Eclipse 中的帮助菜单轻松安装 Maven 插件。
## 步骤 1.创建一个新的 Maven 项目
## 步骤 1 创建一个新的 Maven 项目
第一步是在 Eclipse IDE 中创建一个新的 Maven 项目。 为了这,
* 打开你的 IDE
* 转到**文件,**选择**新建**,然后选择 **Project**
* 将出现一个新窗口,选择 **Maven** 项目,如下所示
* 转到“文件”,选择“新建”,然后选择“Project”
* 将出现一个新窗口,选择“Maven 项目”,如下所示
![Select Maven project from wizard. ](img/00ab8c06c8153d30258daadb5bd34f80.jpg)
选择 Maven 项目
* 单击 **Maven** ,然后选择 **Maven 项目**
* **New Maven Project Wizard** 中,填写工件信息组 ID 和工件 ID(保留所有默认设置),如下所示
* 单击“Maven”,然后选择“Maven 项目”
*“New Maven Project Wizard”中,填写工件信息组 ID 和工件 ID(保留所有默认设置),如下所示
![Fill Maven artifact information like groupID and artifactID. ](img/ea509f3cf0d05adf5a5a60ca2de6771d.jpg)
Maven 工件信息
* 单击**完成**,将创建一个新的 Maven 项目。
* 将所有 Java 源文件放在 **srs / main / java** 目录中,并在 **srs / test / resources** 下创建测试文件
* 单击“完成”,将创建一个新的 Maven 项目。
* 将所有 Java 源文件放在`src/main/java`目录中,并在`src/test/resources`下创建测试文件
## 步骤 2:添加依赖项
要添加构建依赖关系,Maven 允许我们在 pom.xml 文件中使用最简单的方法。 因此,此依赖项将自动下载并添加到您的 Maven 项目中。
要添加构建依赖关系,Maven 允许我们在`pom.xml`文件中使用最简单的方法。 因此,此依赖项将自动下载并添加到您的 Maven 项目中。
转到 pom.xml 文件
转到`pom.xml`文件
将 JUnit 的依赖项元素添加为
......@@ -61,7 +61,7 @@ Maven 工件信息
```
您的 pom.xaml 看起来像
您的`pom.xml`看起来像
```java
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
......@@ -85,35 +85,39 @@ Maven 工件信息
## 步骤 3:清理您的项目
现在清理您的 Maven 项目。 为此,转到项目的根文件夹,右键单击,在列表中找到**以**运行,然后单击 **Maven clean** 命令。
现在清理您的 Maven 项目。 为此,转到项目的根文件夹,右键单击,在列表中找到“运行为”,然后单击“Maven clean”命令。
**替代:**
如果使用命令行,则可以键入 **mvn clean** 命令。
如果使用命令行,则可以键入`mvn clean`命令。
## 步骤 4:编译所有 Java 类
清理完 Maven 项目后,现在编译所有源文件。 右键单击项目的根目录,转到**以**运行,然后单击 **Maven 编译**。 它将编译所有源代码。 在项目浏览器中,您将看到**目标**文件夹已创建。
清理完 Maven 项目后,现在编译所有源文件。 右键单击项目的根目录,转到“运行为”,然后单击“Maven 编译”。 它将编译所有源代码。 在项目浏览器中,您将看到**目标**文件夹已创建。
**替代:**
如果使用命令行,则可以键入 **mvn compile** 命令
如果使用命令行,则可以键入`mvn compile`命令
## 步骤 5:编译测试文件
现在,下一步是编译所有测试文件。 为此,转到您项目的根名称,然后右键单击,转到**以**运行,然后单击 **Maven 测试**。 构建成功后,您将在**目标**文件夹下看到 **surefire-reports** 文件夹。 如果打开此文件夹,您将看到一个包含构建信息的文本文件,如下图所示。
现在,下一步是编译所有测试文件。 为此,转到您项目的根名称,然后右键单击,转到“运行为”,然后单击“Maven 测试”。 构建成功后,您将在**目标**文件夹下看到`surefire-reports`文件夹。 如果打开此文件夹,您将看到一个包含构建信息的文本文件,如下图所示。
![This report file shows build information, you can see on console also.](img/e213fe238d4ef69c1f090ed73bffe5cd.jpg)
报告文件显示构建信息。
**替代:**
如果使用命令行,则可以键入 **mvn test** 命令
如果使用命令行,则可以键入`mvn test`命令
## 步骤 6:运行您的 Maven 项目
现在,最后一步是运行您的项目以制作 JAR 文件。 右键单击项目的根目录,转到**以**运行,然后单击 **Maven 安装**。 构建成功后,它将在**目标**文件夹下创建一个 JAR 文件。
现在,最后一步是运行您的项目以制作 JAR 文件。 右键单击项目的根目录,转到“运行为”,然后单击“Maven 安装”。 构建成功后,它将在**目标**文件夹下创建一个 JAR 文件。
**替代:**
如果使用命令行,则可以键入 **mvn install** 命令
如果使用命令行,则可以键入`mvn install`命令
这里是
......
......@@ -6,9 +6,9 @@ Java 中的“集合”框架随着 [JDK 1.2](https://javatutorial.net/install-j
它为您(程序员)提供列表,集合,映射和队列,以满足您大多数的编码需求。 而且,无论您选择哪一个,都一定会给您至少一个合理的表现。 在深入探讨事物之前,让我们先整理一些事物。
* 集合(小写 c):这表示存储和迭代对象的不同类型的数据结构。
* 集合(大写 c):这是集合,列表和队列扩展的接口。 “语法帮助:`java.util.Collection`
* 集合(大写 c 并以字符 s 结尾):这是一个类,其中包含所有与集合一起使用的“静态”实用程序方法。
* `collection`(小写`c`):这表示存储和迭代对象的不同类型的数据结构。
* `Collection`(大写`c`):这是集合,列表和队列扩展的接口。 “语法帮助:`java.util.Collection`
* `Collections`(大写`c`并以字符`s`结尾):这是一个类,其中包含所有与集合一起使用的“静态”实用程序方法。
![Java collection hierarchy](img/5c554e1339fdc85bb87b0792a7292174.jpg)
......@@ -23,54 +23,56 @@ Java 集合层次结构
现在,不用多说,让我们开始使用收藏集。 它们通常有四个变体,即:
* **列表:**事物列表
* **集合:**独特的事物
* **映射:**具有唯一 ID 的事物
* **队列:**先进先出。
* **列表**事物列表
* **集合**独特的事物
* **映射**具有唯一 ID 的事物
* **队列**先进先出。
## 列表接口
List 接口中重要的首要因素是 INDEX。 拥有索引可以为程序员提供整个索引方法库。 其次,所有三个不同的列表实现均按索引位置排序,这些实现的名称为:
`List`接口中重要的首要因素是索引。 拥有索引可以为程序员提供整个索引方法库。 其次,所有三个不同的列表实现均按索引位置排序,这些实现的名称为:
* [**ArrayList**](https://javatutorial.net/java-arraylist-example)
* **矢量**
* [**链表**](https://javatutorial.net/java-linkedlist-example)
* [`ArrayList`](https://javatutorial.net/java-arraylist-example)
* `Vector`
* [`LinkedList`](https://javatutorial.net/java-linkedlist-example)
(我没有忘记在上述名称中按空格...)
1. [**ArrayList**](https://javatutorial.net/java-arraylist-example) :可以将其视为动态数组,所谓动态数组,是指可以根据需要进行扩展和收缩而无需明确指定其大小的数组。
ArrayLists 帮助的区域位于 FAST ITERATION 和 FAST RANDOM ACCESS 领域。 但是要注意的重要一点是,默认情况下未对 ArrayList 进行排序。
2. **Vector** :Vector 有点像较慢的 ArrayList,主要区别在于,为了线程安全,Vector 方法都已同步。 (现在,线程安全性本身就是一个大话题,我们现在不再讨论。)
3. [**LinkedList**](https://javatutorial.net/java-linkedlist-example) :我们又有了类似于 ArrayList 的内容。 这里的主要区别在于,LinkedList 中的元素是双向链接的。
LinkedList 的迭代速度比 ArrayList 慢,但是当需要快速插入或删除时,它是更好的选择。 我们将在我们的教程[中更详细地说明这一点[Java 中的 ArrayList 和 LinkedList 之间的区别](https://javatutorial.net/difference-between-arraylist-and-linkedlist-in-java)
1. [`ArrayList`](https://javatutorial.net/java-arraylist-example) :可以将其视为动态数组,所谓动态数组,是指可以根据需要进行扩展和收缩而无需明确指定其大小的数组。
`ArrayList`帮助的区域位于快速迭代和快速随机访问领域。 但是要注意的重要一点是,默认情况下未对`ArrayList`进行排序。
2. `Vector``Vector`有点像较慢的`ArrayList`,主要区别在于,为了线程安全,`Vector`方法都已同步。 (现在,线程安全性本身就是一个大话题,我们现在不再讨论。)
3. [`LinkedList`](https://javatutorial.net/java-linkedlist-example) :我们又有了类似于`ArrayList`的内容。 这里的主要区别在于,`LinkedList`中的元素是双向链接的。
`LinkedList`的迭代速度比`ArrayList`慢,但是当需要快速插入或删除时,它是更好的选择。 我们将在我们的教程[中更详细地说明这一点[ Java 中的`ArrayList`和`LinkedList`之间的区别](https://javatutorial.net/difference-between-arraylist-and-linkedlist-in-java)
## 集合接口
这里的词组类似于您在学校数学中学习过的词组,如果您不喜欢该章,请不要着急。 这里唯一重要的是在 Set 中我们不允许重复。 就像列表接口一样,set 接口也具有三种不同的实现:
这里的词组类似于您在学校数学中学习过的词组,如果您不喜欢该章,请不要着急。 这里唯一重要的是在`Set`中我们不允许重复。 就像列表接口一样,集合接口也具有三种不同的实现:
* [**哈希集**](https://javatutorial.net/java-hashset-example)
* [**LinkedHashSet**](https://javatutorial.net/java-linkedhashset-example)
* [**树集**](https://javatutorial.net/java-treeset-example)
* [`HashSet`](https://javatutorial.net/java-hashset-example)
* [`LinkedHashSet`](https://javatutorial.net/java-linkedhashset-example)
* [`TreeSet`](https://javatutorial.net/java-treeset-example)
1. **HashSet** :这只是一个未排序的无序集合。 这里重要的是 LinkedHashSet 使用传入对象的哈希码。
2. **LinkedHashSet** :您现在必须已经猜到它有点类似于 HashSet,并且绝对正确,因此,我只想让您知道这两者之间的区别(在此处输入鼓声) 是 HashSet 的 ORDERED 版本,该版本在所有元素上维护一个双向链接列表。
3. **TreeSet** :这是一个 SORTED 集合,并使用红黑树结构,该结构保证元素**必定**根据自然顺序处于升序。
1. `HashSet`:这只是一个未排序的无序集合。 这里重要的是`LinkedHashSet`使用传入对象的哈希码。
2. `LinkedHashSet`:您现在必须已经猜到它有点类似于`HashSet`,并且绝对正确,因此,我只想让您知道这两者之间的区别(在此处输入鼓声) 是`HashSet`的有序版本,该版本在所有元素上维护一个双向链接列表。
3. `TreeSet`:这是一个有序集合,并使用红黑树结构,该结构保证元素**必定**根据自然顺序处于升序。
## 映射接口
映射接口只关心以下事实:本质上,集合中已经存在或要添加到集合中的所有对象的所有标识符都是完全唯一的。 这里的 KEY 和 VALUE 都是对象。
映射接口只关心以下事实:本质上,集合中已经存在或要添加到集合中的所有对象的所有标识符都是完全唯一的。 这里的键和值都是对象。
像上面给出的两个接口一样,Map 接口也具有三个不同的实现:
* [**HashMap**](https://javatutorial.net/java-hashmap-example)
* [**哈希表**](https://javatutorial.net/java-hashtable-example)
* [**LinkedHashMap**](https://javatutorial.net/java-linkedhashmap-example)
* [`HashMap`](https://javatutorial.net/java-hashmap-example)
* [`HashTable`](https://javatutorial.net/java-hashtable-example)
* [`LinkedHashMap`](https://javatutorial.net/java-linkedhashmap-example)
1. **HashMap** :这为您提供了一个未分类的,未排序的映射,其中键在映射中的位置取决于键的`hashCode()`函数的值。
2. **HashTable** :它是 HashMap 的同步副本。 不允许输入`NULL`
3. **LinkedHashMap** :此实现可维持插入顺序,这在我们讨论迭代及其其他用途时是一项非常重要的功能,但令人怀疑的缺点是速度太慢。
1. `HashMap`:这为您提供了一个未分类的,未排序的映射,其中键在映射中的位置取决于键的`hashCode()`函数的值。
2. `HashTable`:它是`HashMap`的同步副本。 不允许输入`NULL`
3. `LinkedHashMap`:此实现可维持插入顺序,这在我们讨论迭代及其其他用途时是一项非常重要的功能,但令人怀疑的缺点是速度太慢。
您可能也对本教程感兴趣,该教程更详细地说明了 HashMap 和 TreeMap 之间的[差异](https://javatutorial.net/difference-between-hashmap-and-treemap-in-java)
您可能也对本教程感兴趣,该教程更详细地说明了`HashMap``TreeMap`之间的[差异](https://javatutorial.net/difference-between-hashmap-and-treemap-in-java)
## 队列接口
......@@ -78,10 +80,10 @@ List 接口中重要的首要因素是 INDEX。 拥有索引可以为程序员
它基本上遵循 FIFO(先进先出)原则
* **PriorityQueue** :存在 PriorityQueue 的原因是要创建一个“优先输入,优先输出”队列,而不是典型的 FIFO。
* `PriorityQueue`:存在`PriorityQueue`的原因是要创建一个“优先输入,优先输出”队列,而不是典型的 FIFO。
其次,在此实现中,元素通过自然排序或根据比较器排序。
这些是 [Java](http://www.trainingindelhi.com/best-java-training-in-delhi.php) Collection 的基本类型,该主题仍然涉及很多内容,并且还需要进行更多的解释,因此,如果您不这样做,请不要犹豫不决。 首次获得不同 Collection 实现之间的所有差异。
这些是 [Java](http://www.trainingindelhi.com/best-java-training-in-delhi.php)`Collection`的基本类型,该主题仍然涉及很多内容,并且还需要进行更多的解释,因此,如果您不这样做,请不要犹豫不决。 首次获得不同`Collection`实现之间的所有差异。
参考:官方 [Oracle Collections 教程](https://docs.oracle.com/javase/tutorial/collections/implementations/index.html)
\ No newline at end of file
......@@ -2,35 +2,35 @@
> 原文: [https://javatutorial.net/java-linkedlist-example](https://javatutorial.net/java-linkedlist-example)
Java 中的 LinkedList 类使用双链表来存储元素,并且还提供了链表数据结构。 它实现了 List,就像 [ArrayList](https://javatutorial.net/java-arraylist-example) 类和 Deque 接口一样。 就像数组一样,“链接列表”是线性数据结构,但是与数组不同,“链接列表”中的元素是使用指针链接在一起的。 有一个指向第一个元素的指针,通常称为“ Head”。 最后一个元素指向 NULL 元素。 此 NULL 元素意味着链表中没有任何其他元素。
Java 中的`LinkedList`类使用双链表来存储元素,并且还提供了链表数据结构。 它实现了`List``Deque`接口,就像[`ArrayList`](https://javatutorial.net/java-arraylist-example) 类一样。 就像数组一样,`LinkedList`是线性数据结构,但是与数组不同,`LinkedList`中的元素是使用指针链接在一起的。 有一个指向第一个元素的指针,通常称为“头部”。 最后一个元素指向`null`元素。 此`null`元素意味着链表中没有任何其他元素。
![java-featured-image](img/e0db051dedc1179e7424b6d998a6a772.jpg)
## 关于 Java 中的`LinkedList`的重要了解是什么
* Java 中的 LinkedList 类允许重复的元素。
* Java 中的 LinkedList 类维护插入顺序。
* Java 中的 LinkedList 类是不同步的。
* Java 中的 LinkedList 类允许快速操作,因为不需要进行任何移位。
* Java 中的 LinkedList 类可以是列表,栈甚至队列。
* Java 中的 `LinkedList` 类允许重复的元素。
* Java 中的 `LinkedList` 类维护插入顺序。
* Java 中的 `LinkedList` 类是不同步的。
* Java 中的 `LinkedList` 类允许快速操作,因为不需要进行任何移位。
* Java 中的 `LinkedList` 类可以是列表,栈甚至队列。
## `LinkedList`的局限性
* LinkedList 类比数组需要更多的内存,因为它们的指针使用存储。
* `LinkedList`类比数组需要更多的内存,因为它们的指针使用存储。
* 由于我们不能仅通过它们的索引访问每个元素,因此很难遍历链接列表中的元素。
## `LinkedList`的简单说明
![LinkedList in Java](img/3cf099121bd42483c6449002786def95.jpg)
Java 中的 LinkedList
Java 中的`LinkedList`
这里的头是我上面提到的指针,该指针指向第一个元素。 第一个元素(以及链接列表中的每个单个元素)本质上具有两件事-数据和下一个。 数据只是指定元素包含的内容,其次是指向下一个元素的指针。 最后,在图示中我们可以看到 D 指向 NULL,在链接列表中,NULL 表示列表的末尾。
这里的头是我上面提到的指针,该指针指向第一个元素。 第一个元素(以及链接列表中的每个单个元素)本质上具有两件事-数据和下一个。 数据只是指定元素包含的内容,其次是指向下一个元素的指针。 最后,在图示中我们可以看到 D 指向`null`,在链接列表中,`null`表示列表的末尾。
## `LinkedList`中的构造方法
1. LinkedList():用于构造一个空列表。
2. LinkedList(Collection &lt;?扩展 E &gt; c):用于构造一个包含指定集合元素的列表,这些元素按顺序由集合的迭代器返回。
1. `LinkedList()`:用于构造一个空列表。
2. `LinkedList(Collection<? extends E> c)`:用于构造一个包含指定集合元素的列表,这些元素按顺序由集合的迭代器返回。
## `LinksList`中的方法
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册