ArrayList 类提供以下功能和特性:
要使用 ArrayList 类,请包含库标头并实例化列表:
#include <ArrayList.h>
ArrayList<int> myList(ArrayList<int>::DYNAMIC, 10); //This is a faster resize, but less reliable. Can cause problems.
ArrayList<int> myotherlist(ArrayList<int>::DYNAMIC2, 10); //This is a slower resize, but more reliable.
ArrayList<String> strList(ArrayList<String>::FIXED, 5); //This can never be reized (while in fixed mode)
功能 | 描述 |
---|---|
ArrayList(SizeType type = DYNAMIC2, size_t initialSize = 8); |
创建具有可选初始大小和大小类型(DYNAMIC、DYNAMIC2、FIXED)的 ArrayList。默认值为 DYNAMIC2。 |
~ArrayList(); | 析构函数释放分配的内存。 |
void add(T item); | 将项目添加到列表中。 |
bool insert(size_t index, T item); | 在给定索引处插入项目。 |
bool removeItem(T item); | 按值删除项目。 |
void remove(size_t index); | 按索引删除项目。 |
void clear(); | 清除列表中的所有元素。 |
bool addAll(const ArrayList& other); | 添加另一个列表中的所有元素。 |
bool insertAll(size_t index, const ArrayList& other); | 在给定索引处插入另一个列表的所有元素。 |
bool removeIf(bool (*predicate)(T)); | 删除满足给定条件的元素。 |
void removeRange(size_t fromIndex, size_t toIndex); | 删除指定范围内的元素。 |
bool retainAll(const ArrayList& other); | 仅保留存在于另一个列表中的元素。 |
T get(size_t index) const; | 检索给定索引处的项。 |
String getAsString(size_t index) const; | 以字符串形式检索项目。 |
bool contains(T item) const; | 检查列表中是否存在项目。 |
size_t indexOf(T item) const; | 返回项的索引,如果找不到,则返回 -1。 |
size_t size() const; | 返回列表中的元素数。 |
size_t capacity() const; | 返回调整大小之前的最大元素数。 |
bool isEmpty() const; | 检查列表是否为空。 |
void sort(bool (*comparator)(T, T)); | 使用比较器函数对列表进行排序。 |
void setSortAlgorithm(SortAlgorithm algorithm); | 选择排序算法。 |
SortAlgorithm getSortAlgorithm(); | 检索当前排序方法。 |
void forEach(void (*consumer)(T)) const; | 迭代元素并应用函数。 |
void ensureCapacity(size_t minCapacity); | 确保列表有足够的容量。 |
void trimToSize(); | 减少容量以匹配元素数量。 |
void setSizeType(SizeType type); | 更改列表大小调整模式。 |
SizeType getSizeType(); | 检索当前调整大小模式。 |
void setInitialSize(size_t size); | 设置列表的初始大小。 |
size_t getInitialSize(); size_t getInitialSize(); | 检索初始大小。 |
ArrayList* clone() const; | 创建列表的相同副本。 |
ArrayList* clone(int InitialCapacity) const; | 克隆具有指定容量的列表。 |
ArrayList* sublist(size_t fromIndex, size_t toIndex) const; | 提取列表的一部分。 |
算法 | 描述 |
---|---|
BUBBLE_SORT | 简单但效率低下的排序算法。 |
QUICK_SORT | 快速排序算法,适用于大型数据集。 |
MERGE_SORT | 稳定可靠的分选方式。 |
高级内存控制 | (慎用) |
---|---|
void setCapacity(size_t capacity); | 手动设置列表容量。慎 ⚠️ 用! |
void setCount(size_t count); | 手动设置元素数。 ⚠️ 可能会导致意外行为! |
用于优化的编译器指令 | 慎用! |
---|---|
#define SkinnyArray | 删除内存密集型函数以进行优化。 |
#define OverrideSort | 当 SkinnyArray 处于活动状态时,重新启用排序功能。 |
#define OverrideAddAll | 如果使用 SkinnyArray,则重新启用批量添加函数。 |
#define OverrideUtilityFunctions | 重新启用克隆等实用功能。 |
#define IKnowWhatIAmDoing | 授予对手动内存控件的访问权限。 ⚠️ 处理时要格外小心! |
#include <ArrayList.h>
// 创建一个整型的数据列表
ArrayList<int> myList;
void setup() {
Serial.begin(9600); // 初始化串口
// 添加元素到列表
Serial.println("Adding elements...");
for (int i = 0; i < 5; i++) {
myList.add(i * 10);
}
// 插入一个元素
Serial.println("Inserting element at index 2...");
myList.insert(2, 25); // 在索引位置2插入
// 移除一个元素
Serial.println("Removing element at index 3...");
myList.remove(3); // 移除索引位置3的元素
// 检查是否包含指定元素
if (myList.contains(20)) {
Serial.println("List contains 20");
} else {
Serial.println("List does not contain 20");
}
// 打印列表元素
Serial.println("Current List:");
for (int i = 0; i < myList.size(); i++) {
Serial.println(myList.get(i));
}
// 清除列表
Serial.println("Clearing the list...");
myList.clear();
// 检查列表是否为空
if (myList.isEmpty()) {
Serial.println("List is empty");
}
}
void loop() {
// Your loop code here
}
在Arduino IDE的库管理器中,搜索ArrayList,安装下面的库
与数组结构相比,ArrayList提供了更加便利和高级的集合数据操作。
https://github.com/braydenanderson2014/C-Arduino-Libraries/blob/main/lib/ArrayList/README.md
MQTT协议是一个应用层协议,他要求使用的传输层协议能提供有序的,可靠的双向字节流传输服务。
本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。
ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。
在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。
TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速与方向,输入电压在3V~12V,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。
Arduino-ESP32项目提供的Preferences库是一个专为ESP32设计的非易失性存储解决方案,它替代了传统的Arduino EEPROM库,提供了更强大、更可靠的数据存储功能。
在Arduino中,通过串行端口接收数字通常涉及使用Serial.read()、Serial.readString()、Serial.parseInt()等方法。
要生成随机数,可以使用Arduino随机数函数random()。
本文收集整理在Arduino环境下字符串的相关用法,供参考。
ESP32在Arduino中的GPIO模式。