diff --git a/docs/108.md b/docs/108.md index 4c95c8cf52f471c9238909228b48c213533439b3..c2b73ec2777e52957b92505b8537a62fa7fb0a6e 100644 --- a/docs/108.md +++ b/docs/108.md @@ -77,7 +77,7 @@ public class FirstJunitTest { } ``` -如果将此代码与实施 JUnit 之前的代码进行比较,将会有明显的变化, +如果将此代码与实现 JUnit 之前的代码进行比较,将会有明显的变化, 1. 注释:@ Before,@ Test 和@After 2. 方法:setUp(),testPageTitle(),tearDown() diff --git a/docs/187.md b/docs/187.md index 7738aeff1c36030f95ed650f223a007964ef03d9..a15fe7a26c07031757a677b5ad0fac3e43681759 100644 --- a/docs/187.md +++ b/docs/187.md @@ -91,7 +91,7 @@ for (int i = 0; i < 1_000_000; i++) { ## 结论 -批处理仅有助于将数据高效地存储在数据库中。 如果要使用某种故障转移机制,则需要实施手动提交策略。 +批处理仅有助于将数据高效地存储在数据库中。 如果要使用某种故障转移机制,则需要实现手动提交策略。 [代码下载](https://github.com/JBTAdmin/Hibernate) diff --git a/docs/191.md b/docs/191.md index d40becfbefef7d13fdfe30fdcec072c7f09eb077..62a047b62bf4a8b43af46c75caf094a5e57f791e 100644 --- a/docs/191.md +++ b/docs/191.md @@ -59,7 +59,7 @@ Session session = sessionFactory.withOptions().tenantIdentifier( yourTenantIdent ### MultiTenantConnectionProvider -要使用两个可用的多租户提供程序之一,我们需要配置 MultiTenantConnectionProvider。 在这种特殊情况下,这意味着我们必须自己实施。 +要使用两个可用的多租户提供程序之一,我们需要配置 MultiTenantConnectionProvider。 在这种特殊情况下,这意味着我们必须自己实现。 在本文的示例应用中,我添加了接口的最基本的实现。 diff --git a/docs/24.md b/docs/24.md index 11e1cc0662ab4949e3c9c9f2b3dde4b59b005edb..a74196f34195f1b225b77684d80400fc9bd2ddd0 100644 --- a/docs/24.md +++ b/docs/24.md @@ -94,7 +94,7 @@ System.out.println("Value of the localVariable is-"+localVariable); * 局部变量的长度没有限制。 * 如果变量名只有一个单词,则所有字符均应小写。 -### 子弹点 +### 重点 * 局部变量不能使用任何访问级别,因为它们仅存在于方法内部。 * `Final`是唯一可以应用于局部变量的非访问修饰符。 diff --git a/docs/37.md b/docs/37.md index 4ed07363ae58fa378d313eb58f14742b79d4c735..430e89f3c4d43165b6d68f6e01298d3957122267 100644 --- a/docs/37.md +++ b/docs/37.md @@ -152,7 +152,7 @@ abstract class InterfaceExampleThree implements interfaceTwo { } ``` -### 子弹点 +### 重点 * 接口是 100%抽象类(***隐式***)。 在 Java 8 之后,它不成立。 * 接口可以由任何继承树中的任何类实现。 diff --git a/docs/41.md b/docs/41.md index 519dfd1f139d3018a784caec8e56621bb5f6c5b4..513c46b9cbb2de09c8f05e8464a9b2cc8ad63e17 100644 --- a/docs/41.md +++ b/docs/41.md @@ -111,10 +111,10 @@ Inside Static method * **静态**修饰符可以应用于变量或方法,块或内部类。 * ***静态成员***仅属于 Class 而不是实例。 * 静态方法**无法访问***实例变量*。 -* 静态方法**不能替代*,因为它们是特定于类的,并且不属于实例。*** -* 可以将 ***重新定义为*** 静态方法。 +* 静态方法**不能替代**,因为它们是特定于类的,并且不属于实例。 +* 可以将***重新定义***静态方法。 * 如果一个类包含任何静态块,则仅当将该类加载到 JVM 中时,才执行该块。 创建多个实例不会多次运行静态块。 仅构造器将执行多次。 -* 如果调用 Class.forName(“ *class_name* ”),则将执行 Class 的静态块。 +* 如果调用`Class.forName("class_name")`,则将执行 Class 的静态块。 diff --git a/docs/43.md b/docs/43.md index 49a921a3fb34dbd33e016ad854d2782e4ab7b846..cb38ecba9db4598d5d6a1fc2af51d00e29ce1bca 100644 --- a/docs/43.md +++ b/docs/43.md @@ -93,11 +93,13 @@ String [] strArray = {“ J”,“ B”,“ T”}; 数组中的每个元素都有一个索引。 索引**从 0** 开始,这意味着数组中的第一个元素的索引为 0,第二个元素的索引为 1。这些索引号可用于访问数组中的特定元素。 相同的索引可用于在给定索引处设置数组中的值。 -String [] strArray = {“ J”,“ B”,“ T”} -strArray [0] =“ CHANGED”; -字符串 valueAtIndex = strArray [0]; +```java +String[] strArray = {"J","B","T"}; +strArray[0] = "CHANGED"; +String valueAtIndex = strArray[0]; +``` -数组中的最后一个元素的索引号为( **size_of_the_array – 1** )。 +数组中的最后一个元素的索引号为(`size_of_the_array – 1`)。 ## Java 阵列备忘单 diff --git a/docs/44.md b/docs/44.md index 0d50c792370e6d566100839820ea93c1f7f85c57..2eae6810b204ce15864ba953c95b031c07a24301 100644 --- a/docs/44.md +++ b/docs/44.md @@ -15,14 +15,14 @@ Collection API 提供了一组接口供您选择,但同时也为您提供了 * [设置](https://javabeginnerstutorial.com/core-java-tutorial/set-collection-tutorial-for-java-beginners/) * [SortedSet](https://javabeginnerstutorial.com/core-java-tutorial/sorted-set-collection-tutorial-for-java-beginners/ "Sorted Set Collection Tutorial for Java Beginners") (扩展集接口) * NavigableSet(扩展 SortedSet) -* [地图](https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/) - * [SortedMap](https://javabeginnerstutorial.com/core-java-tutorial/sorted-map-collection-tutorial-for-java-beginners/ "Sorted Map Collection Tutorial for Java Beginners") (扩展地图接口) - * 可导航地图(扩展 SortedSet) +* [映射](https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/) + * [SortedMap](https://javabeginnerstutorial.com/core-java-tutorial/sorted-map-collection-tutorial-for-java-beginners/ "Sorted Map Collection Tutorial for Java Beginners") (扩展映射接口) + * 可导航映射(扩展 SortedSet) * 队列 -## 实施类 +## 实现类 -### 1-地图 +### 1-映射 * [HashMap](https://javabeginnerstutorial.com/core-java-tutorial/java-collection-hashmap-hashtable/ "Java Collection Hashmap tutorial") * 哈希表 @@ -139,7 +139,7 @@ List l = new ArrayList(); ### 哈希集 -**Property** +**属性** * 未分类 * 无序 @@ -162,53 +162,53 @@ List l = new ArrayList(); ## 并发收集接口 -* BlockingQueue **扩展了**队列 -* TransferQueue **扩展了** BlockingQueue -* BlockingDeque **扩展了** BlockingQueue -* ConcurrentMap **扩展了**地图 - -## 并发收集实施 - -* LinkedBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue -* ArrayBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue -* PriorityBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue -* DelayQueue **扩展了** AbstractQueue **实现了** BlockingQueue -* SynchronousQueue **扩展了** AbstractQueue **实现了** BlockingQueue -* LinkedBlockingDeque **扩展了** AbstractQueue **实现了** BlockingDeque -* LinkedTransferQueue **扩展了** AbstractQueue **实现了** TransferQueue -* CopyOnWriteArrayList **实现** List,RandomAccess -* CopyOnWriteArraySet **扩展** AbstractSet -* ConcurrentSkipListSet **扩展了** AbstractSet **实现了** NavigableSet -* ConcurrentHashMap **扩展了** AbstractMap **实现了** ConcurrentMap -* ConcurrentSkipListMap **扩展了** AbstractMap **实现了** ConcurrentNavigableMap +* `BlockingQueue`**扩展了**`Queue` +* `TransferQueue`**扩展了**`BlockingQueue` +* `BlockingDeque`**扩展了**`BlockingQueue` +* `ConcurrentMap`**扩展了**`Map` + +## 并发收集实现 + +* `LinkedBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue` +* `ArrayBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue` +* `PriorityBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue` +* `DelayQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue` +* `SynchronousQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue` +* `LinkedBlockingDeque`**扩展了**`AbstractQueue`**实现了**`BlockingDeque` +* `LinkedTransferQueue`**扩展了**`AbstractQueue`**实现了**`TransferQueue` +* `CopyOnWriteArrayList`**实现**`List`,`RandomAccess` +* `CopyOnWriteArraySet`**扩展**`AbstractSet` +* `ConcurrentSkipListSet`**扩展了**`AbstractSet`**实现了**`NavigableSet` +* `ConcurrentHashMap`**扩展了**`AbstractMap`**实现了**`ConcurrentMap` +* `ConcurrentSkipListMap`**扩展了**`AbstractMap`**实现了**`ConcurrentNavigableMap` ## 可能有助于决定收藏类别的因素 为特定问题选择适当的集合时,可以考虑多种因素。 这些因素是: -1. **排序**-元素中的某种排序。 例如,排序顺序,插入顺序或没有特定顺序。 -2. **重复项**-可能或可能不想在集合中允许重复的元素。 -3. **线程安全** -如果有多个线程访问集合,请确保集合中元素的安全。 -4. **键值对**-存储在键值对中。 -5. **阻塞操作**-检索元素时等待集合变为非空。 -6. **随机访问**-即时检索元素。 -7. **上限**-要限制集合可以容纳的最大元素数。 +1. **排序** - 元素中的某种排序。 例如,排序顺序,插入顺序或没有特定顺序。 +2. **重复项** - 可能或可能不想在集合中允许重复的元素。 +3. **线程安全** - 如果有多个线程访问集合,请确保集合中元素的安全。 +4. **键值对** - 存储在键值对中。 +5. **阻塞操作** - 检索元素时等待集合变为非空。 +6. **随机访问** - 即时检索元素。 +7. **上限** - 要限制集合可以容纳的最大元素数。 还有其他因素,例如优先级,延迟等。 ## 备忘单 -1. ***集合*** 是存储对象的数据结构。 +1. ***集合***是存储对象的数据结构。 2. 可以添加,删除对象,也可以在集合中对其进行遍历。 3. 基本收藏有 4 种类型 -4. **列表**: **有序**,**允许**重复,已索引**** -5. **设置**:可以订购或可以不订购。 **不允许复制**。 -6. **映射:不允许使用**重复的**键。** -7. **队列:按 **FIFO** 或**优先级对**进行排序。** -8. **ArrayList**:快速迭代&快速随机访问。 -9. **矢量**:同步方法。 -10. **LinkedList**:适用于实现堆栈和队列。 -11. **哈希集**:快速访问,没有重复,没有排序。 -12. **LinkedHashSet**:没有重复,按插入顺序进行迭代。 -13. **TreeSet**:无重复,按排序顺序进行迭代。 +4. **列表**: **有序**,**允许**重复,已索引。 +5. **集**:可以有序或可以无序。 **不允许复制**。 +6. **映射**:不允许使用**重复的**键。 +7. **队列**:按 **FIFO** 或**优先级**进行排序。 +8. **`ArrayList`**:快速迭代&快速随机访问。 +9. **`Vector`**:同步方法。 +10. **`LinkedList`**:适用于实现堆栈和队列。 +11. **`HashSet`**:快速访问,没有重复,没有排序。 +12. **`LinkedHashSet`**:没有重复,按插入顺序进行迭代。 +13. **`TreeSet`**:无重复,按排序顺序进行迭代。 diff --git a/docs/46.md b/docs/46.md index 73b45bce7db9a67b93733b97e48db80ec928a1a5..318e6abd6aa648508424261722efc51a518e5c53 100644 --- a/docs/46.md +++ b/docs/46.md @@ -9,11 +9,11 @@ Java HashMap 是基于 HashTable 的 Map 实现。 这就是为什么面试官 ## HashMap 的重要属性 -| **DEFAULT_INITIAL_CAPACITY** | 默认初始容量(2 次幂 n)。 HashMap 可以包含许多元素。 | -| **MAXIMUM_CAPACITY** | HashMap 的最大容量(2 次幂 n)。 | -| **负载因子** | 定义 HashMap 的阈值。 重新调整大小时将在 HashMap 中发生。 | -| **DEFAULT_LOAD_FACTOR** | 在 HashMap 的构造器中未定义任何负载因子时将使用。 | -| **大小** | HashMap 包含的键/值对映射数。 | +| **`DEFAULT_INITIAL_CAPACITY`** | 默认初始容量(2 次幂 n)。 HashMap 可以包含许多元素。 | +| **`MAXIMUM_CAPACITY`** | HashMap 的最大容量(2 次幂 n)。 | +| **`loadFactor`** | 定义 HashMap 的阈值。 重新调整大小时将在 HashMap 中发生。 | +| **`DEFAULT_LOAD_FACTOR`** | 在 HashMap 的构造器中未定义任何负载因子时将使用。 | +| **`size`** | HashMap 包含的键/值对映射数。 | ## 创建 HashMap @@ -25,24 +25,24 @@ Java HashMap 是基于 HashTable 的 Map 实现。 这就是为什么面试官 为了添加一个元素,您需要提供 2 个东西:键和值。 -**键:将与指定值关联的**键。 **null** 是允许的。 +**键**:将与指定值关联的键。 `null`是允许的。 **值**:与指定键关联的值。 首先,HashMap 将为给定密钥生成一个哈希码,然后检查是否已经有与给定密钥相关联的值。 如果是,则它将返回已经关联的值。 否则,它将通过提供的键在 HashMap 中增加价值。 -## 子弹点 +## 重点 1. HashMap 不会按 Map 中的元素顺序提供任何保证(均值顺序会随时间变化)。 -2. HashMap 为**获得** & **设置**操作提供恒定时间性能(如果使用正确的哈希算法)。 -3. 迭代收集所需的时间与 HashMap 的“ **容量**”((它可以容纳的元素)& **大小**(它当前容纳的元素)成比例。 +2. HashMap 为**获得**和**设置**操作提供恒定时间性能(如果使用正确的哈希算法)。 +3. 迭代收集所需的时间与 HashMap 的“**容量**”((它可以容纳的元素)和**大小**(它当前容纳的元素)成比例。 4. 如果迭代性能更为重要,那么建议不要将初始容量设置得太高而将负载系数设置得太低。 由于性能与*初始容量*和*负载系数*成正比。 * *容量*是哈希表中的存储桶数。 * 初始容量(默认值为 16)只是创​​建哈希表时的容量。 - * *负载因子(默认值.75)*是衡量哈希表在自动增加其容量之前的填充程度的度量。 - * 当哈希表中的条目数超过负载因子与当前容量的乘积时,哈希表将被*重映射为*(即内部数据结构将被重建)。 -5. 使用“ **Collections.synchronizedMap()**”方法使地图同步。 -6. 由 HashMap 类返回的 迭代器为“ ***故障快速*** ”。 + * *负载因子(默认值 .75)*是衡量哈希表在自动增加其容量之前的填充程度的度量。 + * 当哈希表中的条目数超过负载因子与当前容量的乘积时,哈希表将被*重映射*(即内部数据结构将被重建)。 +5. 使用“`Collections.synchronizedMap()`”方法使地图同步。 +6. 由 HashMap 类返回的 迭代器为“***故障快速***”。 7. HashMap 由 Array(Key)和 LinkedList(Value)支持。 8. HashMap 使用 hashcode(使用密钥)来标识应在 HashMap 中放置或检索对象的确切位置。 9. 最后,HashCode 返回后备数组中的确切位置(索引)。 diff --git a/docs/48.md b/docs/48.md index e97c3a6ee490f611fa5c387f641020103a26f7fa..d1b1b0c19354722f6dade57d977f0ab73ad1d38f 100644 --- a/docs/48.md +++ b/docs/48.md @@ -2,13 +2,13 @@ > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/list-collection-tutorial-for-java-beginners/](https://javabeginnerstutorial.com/core-java-tutorial/list-collection-tutorial-for-java-beginners/) -在这里,我们将详细了解 List 接口及其不同实现。 ***java.util*** 包中的列表接口是 java.util.Collection 接口的子类型。 +在这里,我们将详细了解 List 接口及其不同实现。 `java.util`包中的列表接口是 java.util.Collection 接口的子类型。 ## 列出接口显着点 1. 它是 *java.util* 包的一部分。 2. 它是 *java.util.Collection* 接口的子类型。 -3. 列表是**有序集合。** 意味着可以按有序方式(按索引)访问 List 的元素。 +3. 列表是**有序集合**。 意味着可以按有序方式(按索引)访问 List 的元素。 4. 允许重复值。 5. 允许为 NULL 值。 6. List 有一个名为 ListIterator 的特殊迭代器。 这将有助于双向遍历列表。 @@ -78,7 +78,7 @@ listA.add(0, "element 0"); ## 替换元素 -**Syntax : **E set(int index, E element); +**语法**:E set(int index, E element); **用途**:用于替换列表中指定位置的元素。 diff --git a/docs/49.md b/docs/49.md index 7742ba0863ffb570d4bc4d60c57c22985815b597..fc251e070c1c072b4a9d4a6600441c17420acb1f 100644 --- a/docs/49.md +++ b/docs/49.md @@ -21,7 +21,7 @@ Map 是 Java Collection 框架下的一个 Interface。 * 一些地图实现可以包含的键和值有一些限制。 * 尝试插入不合格的键或值将引发非受检异常。 -# 具体地图实施 +# 具体地图实现 * HashMap * 哈希表 @@ -36,13 +36,13 @@ Map 是 Java Collection 框架下的一个 Interface。 # 地图界面中的重要方法 -* **put(K 键,V 值)**:使用指定的键将指定的值放入映射中。 -* **putAll(Map <?扩展 K,?扩展 V > m)**:将所有映射从给定 Map 复制到此 Map。 -* **keySet()**:返回包含此映射中的密钥的**集**。 -* **values()**:返回一个**集合**,其中包含此 Map 中的所有值。 -* **isEmpty()**:检查给定 Map 中是否有任何元素。 -* **remove(Object key)**:从此映射中删除键的映射(如果存在)。 -* **containsKey(Object key)**:检查指定键是否存在任何映射。 -* **containsValue(Object value)**:检查是否存在用于指定 Object 的任何映射(可能不止一个)。 -* **get(Object key)**:返回与此键关联的值。 -* **clear() :** Used to remove all the mapping in given Map. \ No newline at end of file +* **`put(K key, V value)`**:使用指定的键将指定的值放入映射中。 +* **`putAll(Map m)`**:将所有映射从给定 Map 复制到此 Map。 +* **`keySet()`**:返回包含此映射中的密钥的**集**。 +* **`values()`**:返回一个**集合**,其中包含此 Map 中的所有值。 +* **`isEmpty()`**:检查给定 Map 中是否有任何元素。 +* **`remove(Object key)`**:从此映射中删除键的映射(如果存在)。 +* **`containsKey(Object key)`**:检查指定键是否存在任何映射。 +* **`containsValue(Object value)`**:检查是否存在用于指定 Object 的任何映射(可能不止一个)。 +* **`get(Object key)`**:返回与此键关联的值。 +* **`clear() `**:Used to remove all the mapping in given Map. \ No newline at end of file diff --git a/docs/56.md b/docs/56.md index 6300f20b66d3d6d900e62a2668bd6a52ae2d7cb9..68f0e20a884227ca0c5e8df5838a7c5441a2a50b 100644 --- a/docs/56.md +++ b/docs/56.md @@ -169,7 +169,7 @@ Company Address: null 在这两种情况下,此处存储的 case 值均来自 class(Employee class),而不是 Object(emp object)。 此外,即使是临时变量,也会保存 companyCEO 变量值。 因为 static 修饰符会更改此变量的行为。 -## 子弹点 +## 重点 1. 静态变量无法序列化。 2. 在反序列化时,如果在基类的初始化过程中提供了相同的值,则可用于静态变量。 diff --git a/docs/59.md b/docs/59.md index 36ad057e12ef27201db5f96ffcd070d8daf0d7a2..675866b49dc39e13491c326b3cff5607152e83e9 100644 --- a/docs/59.md +++ b/docs/59.md @@ -199,7 +199,7 @@ Friday 但这不是唯一可以实现枚举方法的用法。 在下一节中,我们将看到如何将 Enum 值映射到 String 并返回。 -## 实施接口 +## 实现接口 关于枚举鲜为人知的一件事是它们可以实现接口。 这意味着,如果您需要不同枚举所需要的通用功能,则可以使用一个接口定义它,而枚举必须在该接口中实现方法。 @@ -266,7 +266,7 @@ public Workday fromDatabase(String representation) { 有时,您最终得到一个采用布尔表达式的方法(或者您仅获得一个告诉您使用布尔值的项目说明,但感觉很痒)。 在这种情况下,可以随意引入一个新的枚举并使用正确的值而不是布尔值。 -例如,一旦我有了一个规范,告诉我必须创建一个带有一些参数的方法和一个布尔值,称为“ rightHandSide”。 实际上,“ rightHandSide”的默认值为 false。 首先,我按照规范中的说明实施了该方法,但是这对我来说并不舒服,我认为这是摆脱这种冷酷感觉的另一种方法: +例如,一旦我有了一个规范,告诉我必须创建一个带有一些参数的方法和一个布尔值,称为“ rightHandSide”。 实际上,“ rightHandSide”的默认值为 false。 首先,我按照规范中的说明实现了该方法,但是这对我来说并不舒服,我认为这是摆脱这种冷酷感觉的另一种方法: ```java public void someMethod(String someParameter, boolean rightHandSide) {