摘要: ## 简介 `java.util.ArrayList` `List` 接口的可调整大小的数组实现。 **源码中对数组的操作非常精彩,值得学习** **数组一旦初始化长度就不可以发生改变** 数组结构特点 - 增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。 - 查询快:由于数组在内存 阅读全文
posted @ 2023-06-19 14:02 流星<。)#)))≦ 阅读(107) 评论(0) 推荐(0) 编辑
摘要: ## 前言 这个视频是大学教学内容,之前也学习过尚硅谷的视频课程,相对于尚硅谷的,内容要更全面一些,有对应的教材,但是语言是C,尚硅谷的实例更多一些。 对于入门来说,这个视频教程更好一些 ## 目录 * 概论 * [20230227 1.1. 什么是数据结构](https://www.cnblogs 阅读全文
posted @ 2023-06-19 11:01 流星<。)#)))≦ 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 - `java.util.stream.Stream` - `public interface Stream extends BaseStream>` - 对应基本类型类:`IntStream`, `LongStream`, `DoubleStream` ## API ### stati 阅读全文
posted @ 2023-06-19 10:58 流星<。)#)))≦ 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ## 希尔排序( by Donald Shell ) ![希尔排序](https://images.cnblogs.com/cnblogs_com/huangwenjie/2284066/o_230407014056_image.png) - 定义增量序列 $D_M > D_{M-1} > … > 阅读全文
posted @ 2023-06-19 10:54 流星<。)#)))≦ 阅读(8) 评论(0) 推荐(0) 编辑
摘要: ## 参考资料 * [大话设计模式 - 微信读书](https://weread.qq.com/web/reader/63632ba0813ab78f4g011d17?) ### 目录 * [0. 面向对象基础](https://www.cnblogs.com/huangwenjie/p/17490 阅读全文
posted @ 2023-06-19 10:07 流星<。)#)))≦ 阅读(6) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并 阅读全文
posted @ 2023-06-19 09:56 流星<。)#)))≦ 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 阅读全文
posted @ 2023-06-19 09:55 流星<。)#)))≦ 阅读(10) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示 当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式 你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。 为遍历不同的聚集结构提供如开始、下一 阅读全文
posted @ 2023-06-19 09:48 流星<。)#)))≦ 阅读(3) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 组合模式(Composite),将对象组合成树形结构以表示'部分-整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 ![组合模式](https://images.cnblogs.com/cnblogs_com/huangwenjie/2301626/o_23042 阅读全文
posted @ 2023-06-19 09:47 流星<。)#)))≦ 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 ![备忘录模式](https://images.cnblogs.com/cnblogs_com/huangwenjie/2301626/o_2 阅读全文
posted @ 2023-06-19 09:47 流星<。)#)))≦ 阅读(10) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式主要解决的问题:简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是我们就想办法适配它 系统的数据和行为 阅读全文
posted @ 2023-06-19 09:46 流星<。)#)))≦ 阅读(4) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化 ![状态模式](https://images 阅读全文
posted @ 2023-06-19 09:46 流星<。)#)))≦ 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 工厂方法模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类。 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 ![抽象工厂模式](https://images.cnblogs.com/cnblogs_com/ 阅读全文
posted @ 2023-06-19 09:46 流星<。)#)))≦ 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 观察者模式 又叫作 发布-订阅(Publish/Subscribe)模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 ![观察者模式](https://images.cnblogs.com 阅读全文
posted @ 2023-06-19 09:45 流星<。)#)))≦ 阅读(18) 评论(0) 推荐(0) 编辑
摘要: '建造者模式(Builder)',又叫生成器模式 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 ![建造者模式](https:/ 阅读全文
posted @ 2023-06-19 09:45 流星<。)#)))≦ 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ![外观模式](https://images.cnblogs.com/cnblogs_com/huangwenjie/2301626/o_230421062508_ima 阅读全文
posted @ 2023-06-19 09:45 流星<。)#)))≦ 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 迪米特法则(LoD) 也叫 最少知识原则 迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限 面向对象 阅读全文
posted @ 2023-06-19 09:44 流星<。)#)))≦ 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 既然用了继承,并且肯定这个继承有意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理 模板方法(Template Method) 阅读全文
posted @ 2023-06-19 09:44 流星<。)#)))≦ 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype),用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 ![原型模式](https://images.cnblogs.com/cnblogs_com/huangwenjie/2301626/o_230421013453_image.png) 原型模式其实就是 阅读全文
posted @ 2023-06-19 09:44 流星<。)#)))≦ 阅读(2) 评论(0) 推荐(0) 编辑
摘要: ## 介绍 简单工厂模式的最大优点在于工厂类中包含必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 就编程来说,我们应该尽量将长的代码分派切割成小段,再将每一小段'封装'起来,减少每段代码之间的耦合,这样风险就分散了,需要修改或扩展的难度就降低了。 工 阅读全文
posted @ 2023-06-19 09:43 流星<。)#)))≦ 阅读(7) 评论(0) 推荐(0) 编辑