# AppendList对象
>[info] 核心 1.3.5-BETA 添加
>[success] `AppendList`旨在优化对CQ码和其他值的相互拼接。
为了更好的服务CQ码的拼接操作,在添加此类的同时我也对CQCode类内部进行了优化。具体优化内容可查阅`CQCode`章节。
不同于直接的字符串拼接,AppendList提供了一些对于CQCode更加遍历的操作,且当你拼接进去的字符串符合CQ码规则的时候,他也会自动将字符串转化为CQCode对象。
首先,我先举个栗子:
```java
// 获取一个CQCodeUtil对象
CQCodeUtil build = CQCodeUtil.build();
// 构建三个at的CQ码对象
CQCode at1 = build.getCQCode_At("1111111111");
CQCode at2 = build.getCQCode_At("2222222222");
CQCode at3 = build.getCQCode_At("3333333333");
// 使用append方法构建AppendList并拼接CQ码与字符串对象
AppendList atTest = at1.append("艾特测试").append(at2).append(at3);
// 转化为字符串, 默认元素间使用空格间隔。
String toString = atTest.toString();
// 打印结果是:[CQ:at,qq=1111111111] 艾特测试 [CQ:at,qq=2222222222] [CQ:at,qq=3333333333]
System.out.println(toString);
```
<br>
>[success] `AppendList`是一个接口类型,目前所提供的一个实现类是`CQAppendList`
**详细API如下:**
```java
/**
* 拼接一个CharSequence类型对象
* 如果字符串可以转化为CQCode则会进行转化。
* * 一个append中如果包含而不是整个都是的话将不会进行转化。
* * 例如:
* * <code>
* * append("hello! [CQ:at,qq=123]");
* * append(" [CQ:at,qq=123] ");
* * 以上情况不会进行转化。
* * </code>
* */
AppendList append(CharSequence append);
/** 对象默认转化为字符串 */
default AppendList append(Object o){
return append(String.valueOf(o));
}
AppendList append(long append);
AppendList append(int append);
AppendList append(double append);
AppendList append(boolean append);
AppendList append(char append);
/** 转化为字符串后会前后去空处理 */
AppendList appendTrim(CharSequence append);
/** 批量加载,且都去空处理 */
AppendList appendTrim(AppendList append);
/** 拼接另一个AppendList */
AppendList append(AppendList list);
/** 获取拼接列表中的CQCode对象 */
CQCode[] getCQCodes();
/** 获取某个索引上的值 */
CharSequence get(int index);
/** 获取所有的值 */
CharSequence[] getAll();
/** 获取长度 */
int size();
/** 是否包含 */
boolean contains(Object b);
/** 是否包含某个CQ码类型 */
boolean containsType(CQCodeTypes types);
/** foreach方法 */
void forEach(Consumer<CharSequence> each);
/**
* 只遍历CQCode的foreach,携带索引参数
*/
void forEachCQCode(BiConsumer<CQCode, Integer> each);
@Override
String toString();
/** 转化为流对象 */
Stream<CharSequence> stream();
/** 转化为仅保留CQCode的流对象 */
Stream<CQCode> streamCQCode();
```
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用API与功能
- 国际化语言
- 异常
- 消息监听
- @Listen
- @OnListen模板
- @Filter
- 消息参数截取
- @Spare
- @Constr
- @Ignore
- @ListenBreak
- @ListenBreakPlugin
- @ListenBody
- 监听响应
- 成功判定与返回值
- 监听上下文
- 动态参数
- 监听消息API
- 异步监听 @Async
- 限流监听 @Limit
- 自定义Http送信器
- 枚举与类型
- 送信器
- SENDER
- SETTER
- GETTER
- 返回值
- 其他位置
- 日志与日志拦截
- 异常处理
- 依赖注入
- 自定义依赖获取
- 批量依赖载入
- 注意事项
- 常量
- 定时任务
- 自定义过滤
- 拦截器
- 拦截器总定义
- 上下文对象总定义
- 监听消息拦截
- 送信器拦截
- 监听函数拦截
- CAT码
- CQ码
- CQCode
- CQ码工具类
- CQ扩展工具类
- AppendList拼接链
- 高级内容
- 阻断机制
- 截断机制
- 自定义枚举类型
- 枚举工厂
- byName注解
- 自定义注解
- 配置
- 文件配置
- 注解配置
- 参数配置
- 多配置
- 多账号
- 自定义账号管理器
- 小心!
- 核心版本与组件如何升级核心
- 核心版本迭代指南
- 核心
- 更新日志
- jar包与依赖
- 监听消息类结构图
- 快速启动
- 模组与扩展
- 模组开发
- 现有模组
- 通用模组-延时任务
- 通用模组-CQ码工具
- 转义器
- CQ码操作工具类
- CQ码模板-CodeTemplate
- CQ码载体-KQCode
- CQ码构建器
- MQ码工具类
- 通用模组-redis-bot管理器
- 通用模组-Debugger
- Debugger-common模块
- Debugger-server模块
- Debugger-client模块
- 通用模组-钉钉机器人
- 组件-Mirai(JVM)
- 快速开始(1.13+)
- springboot-starter
- 注意事项
- 配置
- 额外的内容
- 快速回复
- 额外监听
- CQ码解析
- 组件-酷Q(QQ)-CQ HTTP API(基本失效)
- 快速开始(推荐)
- 快速开始(1.7.x以下,不推荐)
- 快速开始(Springboot启动器)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 额外的内容
- 自定义额外监听
- CQ送信器
- 元事件
- 监听消息类结构图
- 组件-酷Q(QQ)-JCQ(失效)
- 快速开始
- 更新日志
- 额外的内容
- JCQ日志
- 配置
- 注意事项
- 监听消息类结构图
- 组件-酷Q(QQ)-HTTP TO CQ(失效)
- 快速开始(核心1.7.x及以下)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 监听消息类结构图
- 组件-酷Q(QQ)-LEMOC (失效)
- 快速开始(核心1.7.x及以下)
- 配置
- 注意事项
- 更新日志
- 监听消息类结构图
- Springboot快速启动器
- 常见问题汇总
- BUG反馈
- 更新计划总览