顺序表 ArrayList & LinkedList

操作合集

01. 创建表 createList

// 默认使用 Java 的 ArrayList 作为 顺序表, 所以不需要创建, 直接使用
ArrayList<String> mySequenceList = new ArrayList<String>();
LinkedList<String> myLinkedList = new LinkedList<String>();

02. 初始化 initList (默认提供初始化, 不需要特殊初始化)

但是, 因为 Java 的 ArrayList 是支持动态增长的, 所以, 并不是一下子分配了所有的内存空间, 而是一点点增长的.

比如, ArrayList<String> mySequenceList = new ArrayList<String>(10);   // 这样也没有用, 并不是一下子分配了10个存储单元的. 

03. 返回长度 listLength

mySequenceList.size()
myLinkedList.size()

04. 判断空表 ListEmpty

mySequenceList.isEmpty()
myLinkedList.isEmpty()

05. 插入元素 listInsert

// 插入队尾
mySequenceList.add("asdf");
// 插入指定 index 位置, 但是 index 要 < size()
// 相当于前位插入
mySequenceList.add(0, "bi");
myLinkedList.add("a");
myLInkedList.add(0,"b1");

06. 删除元素 listDelete

// remove 按照 index 顺序
mySequenceList.remove(0);
// remove 按照 value 值
mySequenceList.remove("asdf");
myLinkedList.remove(0);
myLinkedList.remove("asdf");

07. 返回元素前驱 / 后继元素 priorElem, nextElem

// sequence return
int seq = mySequenceList.indexOf("asdf");
if (seq >= 0) {
    int prior = seq - 1;
    int next = seq + 1;
    if (prior >= 0) {
        System.out.println("prior: " + mySequenceList.get(prior));
    }
    if (next <= mySequenceList.size()) {
        System.out.println("next: " + mySequenceList.get(next));
    }
}
// for linked list:

08. 返回元素后继元素 nextElem

reference 07

09. 获得元素位置 LocateElem

int seq = mySequenceList.indexOf("asdf");

10. 返回某个位置元素 retrieve

mySequenceList.get(0);

11. 清空顺序表 ClearList

mySequenceList.clear();

链表 LinkedList

 

循环链表

 

双向链表

LinkedList 是一个双向链表.

Comments

直接使用提供的方式, 还是有不方便的地方,例如: 无法直接获得前驱和后继, 可能还需要自己编码. 

这个方法本身不是 ArrayList 和 LinkedList 的标准方法.

数据结构, 还是额外自己定义的更加灵活, 直接使用系统提供的, 还是有很多的函数本身没有的.

posted @ 2021-10-31 16:27 神之一招 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 数组 数组的特点: 有序, 数组是同类型的. // 数组声明 int[] intArray = new int[10]; // 典型数组声明是: type[] identifer = new type[length]; // type 是数组元素类型 // identifer 是数组变量名称 // 阅读全文
posted @ 2021-10-29 11:04 神之一招 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 每一种环境写一种, 必须以 application- 开头.application-dev.propertiesapplication-int.propertiesapplication-test.propertiesapplication-pro.properties 可以在不同得文件中设置不同得 阅读全文
posted @ 2021-08-22 09:00 神之一招 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 为什么 单体应用 -> 微服务 交付缓慢 充满故障的软件交付 可扩展性差 如何从 单体应用 -> 微服务 你应该逐步重构你的单体应用, 而不是推到重来. 有3种主要的策略: 1. 将新功能实现为服务 2. 隔离表现层和后端 3. 通过将功能提取到服务中来分解单体 API Gateway: 将对新功能 阅读全文
posted @ 2021-06-24 18:18 神之一招 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 部署: 包含两个相关联的概念: 流程和架构。 部署流程: 包括一些由开发人员和运维人员执行的步骤, 以便将软件投入到生产环境. 手动部署已经一去不复返了, 部署的发展. DevOps 跟部署息息相关. 部署模式: 编程语言特定发布包格式 比如 spring Boot 部署为 Jar 或 War. 例 阅读全文
posted @ 2021-06-24 16:44 神之一招 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 面向生产环境, 要保证 3 点: 安全性, 可配置性(服务可配置), 可观测性(监控和日志记录). 安全 身份验证 访问权限 审计, 用户的关键操作行为 安全进程间通信 (服务之间通信都应该采用传输层安全性 TLS)加密. 服务间通信甚至可能需要使用身份验证. 可以考虑使用安全架构: Spring 阅读全文
posted @ 2021-06-24 15:48 神之一招 阅读(95) 评论(0) 推荐(0) 编辑
摘要: API Gateway: 实现一个服务,该服务是外部 API 客户端进入基于微服务应用程序的入口点. 所以, API Gateway 实际上是一种服务, 它负责请求路由, API 组合 和身份验证, 流量监控, 限流 等各项功能. 来自外部客户端的所有 API 请求首先转到 API Gateway, 阅读全文
posted @ 2021-06-24 15:28 神之一招 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 导读 为什么分布式事务不适合现代应用程序 使用 Saga 模式维护微服务架构的一致性 使用协同和编排这两类方式协调 Saga 采用对策来解决缺乏隔离的问题 Spring 使用 @Transactional 注解来让方法调用自动的在事务范围内完成, 在只访问一个数据库的单体应用中, 事务管理简单明了. 阅读全文
posted @ 2021-06-24 12:01 神之一招 阅读(343) 评论(0) 推荐(0) 编辑
摘要: Swagger-UI 接口化工具 微服务是面向服务的架构, 在整个微服务项目中, 服务数量众多, 而每个服务又包含一系列 RESTFUL 风格API(controller), 开发/测试人员在调用API时, 都需要知道服务中有哪些功能, 以及如何获取服务中的 API. 此时,我们就可以通过当前流行的 阅读全文
posted @ 2021-04-17 14:33 神之一招 阅读(55) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud 是在 Spring Boot 基础上构建的, 用于检查分布式系统构建的工具集. 工具集包括 配置管理, 服务发现, 智能路由,断路器,为代理和控制总线. 服务发现 Eureka 包括 服务发现组件(Eureka Server) 也叫做注册中心 和 客户端发现组件 (Eure 阅读全文
posted @ 2021-04-17 12:21 神之一招 阅读(60) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示