|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 技术笔记
|
|
|
|
|
|
|
|
|
|
项目开发中,可以将一些操作通过算法来实现。来提高项目的运行占用率。提高项目的稳定性。
|
|
|
|
|
|
|
|
|
|
如:搜索。日常中,通常都是使用三方工具类或方法来实现。但这会调用到其他框架,在内存和运行中会占用一定的内存的。
|
|
|
|
|
|
|
|
|
|
想要提高稳定可以使用KMP算法来完成搜索的实现。
|
|
|
|
|
|
|
|
|
|
第二。在日常的开发中,想要将URL中的数值进行拼接和整理。也可以使用Java的字符缓存来完成。同时你也可以将递归方式来将修改的东西进行传入。这样。可以优化很多代码。
|
|
|
|
|
|
|
|
|
|
字符缓存区有两种:
|
|
|
|
|
|
|
|
|
|
- StringBuilder 线程不安全,但效率高。
|
|
|
|
|
- StringBuffer 线程安全,但效率不高。
|
|
|
|
|
|
|
|
|
|
他们这两个的底层都是新建一个数组,大小是16。当然如果有内容传入进来的话就是在内容的长度上延长16。
|
|
|
|
|
|
|
|
|
|
在这个缓冲区中,可以对字符串进行追加和删除。或者覆盖。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Collection是一组对象,这些对象称为元素。它是集合层次结构中的根接口。该接口主要用于传递和操作集合,以便实现最大的通用性。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Collection接口定义了许多方法,包括:
|
|
|
|
|
|
|
|
|
|
| 方法 | 描述 |
|
|
|
|
|
| ------------- | ------------------------------------------------------------ |
|
|
|
|
|
| add() | 如果将指定的元素插入到此集合中,则返回一个布尔值true。 |
|
|
|
|
|
| addAll() | 如果将指定集合的所有元素添加到调用集合中,则返回一个布尔值true。 |
|
|
|
|
|
| clear() | 从此集合中自动移除所有元素。 |
|
|
|
|
|
| contains() | 如果此队列包含指定的元素,则返回一个布尔值true。 |
|
|
|
|
|
| containsAll() | 如果此集合包含指定集合中的所有元素,则返回一个布尔值true。 |
|
|
|
|
|
| equals() | 如果指定对象与此集合相等,则返回一个布尔值true。 |
|
|
|
|
|
| hashCode() | 返回此集合的哈希码值。 |
|
|
|
|
|
| isEmpty() | 如果此集合不包含元素或为空,则返回true。 |
|
|
|
|
|
| iterator() | 返回按正确顺序对元素进行迭代的迭代器。 |
|
|
|
|
|
| remove() | 如果该元素存在于集合中,则从该队列中删除指定的元素。 |
|
|
|
|
|
| removeAll() | 从此集合中删除指定集合中也存在的所有元素。 |
|
|
|
|
|
| removeIf() | 删除满足给定谓词过滤器的此集合的所有元素。 |
|
|
|
|
|
| retainAll() | 仅保留此集合中与指定集合中存在的元素。 |
|
|
|
|
|
| size() | 返回此集合中的元素总数。 |
|
|
|
|
|
| spliterator() | 返回此集合中的元素的分割器。 |
|
|
|
|
|
| toArray() | 返回包含此集合中所有元素(按正确顺序)的数组。 |
|
|
|
|
|
|
|
|
|
|
实例:
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
public class JavaCollectionExample1 {
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
Set<Integer> set = new HashSet<>();
|
|
|
|
|
// 将指定元素插入到集合中
|
|
|
|
|
set.add(2);
|
|
|
|
|
set.add(5);
|
|
|
|
|
System.out.println("初始集合: " + set);
|
|
|
|
|
// 将指定集合的所有元素添加到调用集合中
|
|
|
|
|
Collections.addAll(set, 11, 12, 13, 14, 15);
|
|
|
|
|
System.out.println("最终集合: " + set);
|
|
|
|
|
// 返回集合的总大小
|
|
|
|
|
int size = set.size();
|
|
|
|
|
System.out.println("集合大小: " + size);
|
|
|
|
|
// 如果此集合包含指定的元素,则返回一个布尔值true
|
|
|
|
|
boolean val = set.contains(5);
|
|
|
|
|
if (val) {
|
|
|
|
|
System.out.println("集合中包含5");
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("集合中不包含5");
|
|
|
|
|
}
|
|
|
|
|
// 自动从集合中删除所有元素
|
|
|
|
|
set.clear();
|
|
|
|
|
System.out.println("集合中的元素: " + set);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
输出结果:
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
初始集合: [2, 5]
|
|
|
|
|
最终集合: [2, 5, 11, 12, 13, 14, 15]
|
|
|
|
|
集合大小: 7
|
|
|
|
|
集合中包含5
|
|
|
|
|
集合中的元素: []
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
实例2:
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
|
|
|
|
|
|
|
|
|
public class JavaCollectionExample2 {
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
ConcurrentLinkedQueue<Integer> queue = new ConcurrentLinkedQueue<Integer>();
|
|
|
|
|
Set<Integer> set = new HashSet<>();
|
|
|
|
|
// 将指定集合的所有元素添加到调用集合中
|
|
|
|
|
Collections.addAll(set, 11, 12, 13, 14, 15);
|
|
|
|
|
System.out.println("集合: " + set);
|
|
|
|
|
// 返回按正确顺序对元素进行迭代的迭代器
|
|
|
|
|
Iterator<Integer> iterator = set.iterator();
|
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
|
System.out.println(iterator.next());
|
|
|
|
|
}
|
|
|
|
|
set.clear();
|
|
|
|
|
// 检查集合是否为空
|
|
|
|
|
boolean isEmpty = set.isEmpty();
|
|
|
|
|
if (isEmpty) {
|
|
|
|
|
System.out.println("集合为空");
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("集合不为空");
|
|
|
|
|
}
|
|
|
|
|
for (int i = 1; i < 21; i++) {
|
|
|
|
|
queue.add(i);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("集合中的元素: " + queue);
|
|
|
|
|
for (int i = 1; i < 11; i++) {
|
|
|
|
|
int j = i * 5;
|
|
|
|
|
set.add(j);
|
|
|
|
|
}
|
|
|
|
|
// 仅保留集合中与指定集合中存在的元素
|
|
|
|
|
queue.retainAll(set);
|
|
|
|
|
System.out.println("5的倍数: " + queue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
输出结果:
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
集合: [11, 12, 13, 14, 15]
|
|
|
|
|
11
|
|
|
|
|
12
|
|
|
|
|
13
|
|
|
|
|
14
|
|
|
|
|
15
|
|
|
|
|
集合为空
|
|
|
|
|
集合中的元素: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
|
|
|
|
|
5的倍数: [5, 10, 15, 20]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Spring boot 的生命周期详细图:
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
项目代码地址资料:
|
|
|
|
|
|
|
|
|
|
[EduAdminSys](https://github.com/holysword02/EducationManagementSystem/tree/main)
|