# 技术笔记 项目开发中,可以将一些操作通过算法来实现。来提高项目的运行占用率。提高项目的稳定性。 如:搜索。日常中,通常都是使用三方工具类或方法来实现。但这会调用到其他框架,在内存和运行中会占用一定的内存的。 想要提高稳定可以使用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 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 queue = new ConcurrentLinkedQueue(); Set set = new HashSet<>(); // 将指定集合的所有元素添加到调用集合中 Collections.addAll(set, 11, 12, 13, 14, 15); System.out.println("集合: " + set); // 返回按正确顺序对元素进行迭代的迭代器 Iterator 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] ``` --- 项目代码地址资料: [EduAdminSys](https://github.com/holysword02/EducationManagementSystem/tree/main)