JavaSE
宋七夏
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java设计模式--代理模式,适配器模式,装饰者模式
适配器模式适配器模式(Adapter Pattern,其别名为包装器(Wrapper))将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作;适配器模式属于结构型模式;主要分为三类:类适配器模式,对象适配器模式,接口适配器模式;工作原理:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容;从用户的角度看不到被适配者,是解耦的 ;用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法;用户收到反原创 2020-07-25 16:45:26 · 530 阅读 · 0 评论 -
Java设计模式--建造者模式
文章目录概述第一种方式静态内部类方式概述工厂类模式提供的是创建单个类的模式,也就是它注重创建实例的结果,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是抽象工厂模式和最后的客户端使用结合起来得到的。建造者模式的四个角色Product(产品角色): 一个具体的产品对象;Builder(抽象建造者): 创建一个Product对象的各个部件指定的 接口/抽象类;ConcreteBuilder(具体建造者): 实现接口,构建和装配原创 2020-07-25 12:21:55 · 244 阅读 · 0 评论 -
Java设计模式--工厂模式
文章目录概述简单工厂模式抽象工厂方法概述参考示例:需要多种发送信息的工具;如,Mail 和 SMS 信息的发送;要便于发送工具的扩展,并且便于维护;工厂模式属于创建型模式;工厂模式更注重对象的创建结果,而不是建造者模式注重过程;简单工厂模式建立一个工厂类,对实现了同一接口(行为,Action)的一些类进行实例的创建(使用 SenderFactory 类来创建对应的实例),如下图:Sender 接口public interface Sender { void send(原创 2020-07-23 18:17:15 · 167 阅读 · 0 评论 -
Java设计模式--单例模式
文章目录概述饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全)双重检查(线程安全)静态内部类(线程安全)枚举概述单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法);单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等);单例模式的八种实现方式(4原创 2020-07-23 17:50:07 · 159 阅读 · 0 评论 -
平衡二叉树(AVL树)Java语言实现
参考:《数据结构与算法分析》和《算法(第四版)》文章目录概述旋转左旋转右旋转右左双旋转(RL)左右双旋转(LR)判断是否平衡方法 balance所有代码概述之前的二分搜索树可能会出现最坏的情况,如果添加的元素为:1,2,3,4,5 和 6 ,那么,二分搜索树就会像链表一样,插入速度没有影响,但是查询速度明显降低(因为需要依次比较),不能发挥 BST 的优势,因为每次还需要比较左子树,其查询速度比单链表还慢;因此,需要使用 平衡二叉树来解决此问题:平衡二叉树也叫平衡二叉搜索树(Self-b原创 2020-06-27 10:38:23 · 463 阅读 · 0 评论 -
Java集合--HashMap(1.7与1.8)底层实现
文章目录MapHashMap(1.7 了解)存储结构Entry 结点基本属性构造器put 方法(重点)putForNullKey 方法addEntry 和 createEntry 方法确定桶下标计算 hash 值确定下标(为什么这样处理)总结上述问题扩容MapMap 集合是有 Key 和 value 的(键值对),Collection 集合是只有 value;Map 接口并不是 Collection 下的;TreeMap:基于红黑树实现;HashMap:基于哈希表(数组+链表+红黑树(1.8原创 2020-06-15 09:51:40 · 1100 阅读 · 0 评论 -
Java集合--List(ArrayList,LinkedList和Vector底层实现)
ListList 接口继承了 Collection ,List 中的元素有序可重复;List 接口的实现类主要有 ArrayList,LinkedList 和 Vector;ArrayListArrayList 是 List 使用中最常用的实现类,它的底层数据结构是数组,ArrayList 查询速度快,效率高,但是增和删较慢,并且是线程不安全的集合;基本属性ArrayList 底层是一个数组,其默认的初始容量为10 //数据对象存放的数组,当前对象不参与序列化(主要是关键字trans原创 2020-06-13 08:56:16 · 1188 阅读 · 0 评论 -
LeetCode题解-双指针
88.合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]原创 2020-06-08 09:27:01 · 302 阅读 · 0 评论 -
Java基础-异常
参考《Java核心技术卷Ⅰ》和《Java程序员面试笔试宝典》异常在Java中,所有的异常都是从Throwable继承而来的,是所有异常的共同祖先;Throwable有两个子类,是Error和Exception。Error类层次结构描述了 Java 运行时系统的内部错误和资源耗尽错误,是程序无法处理的错误,表示运行应用程序中较严重问题。Exception是另外一个非常重要的异常子类,这个层次...原创 2020-02-21 18:22:51 · 258 阅读 · 0 评论 -
LeetCode数组练习题
LeetCode136:一个给定的数组中,只有某一个数字是单独一个,其余数字均是两个,输出那个单独的数字class LeetCode136{ public static void main(String[] args){ int[] arr={1,2,1,4,2}; //1 1 2 2 4 System.out.print(singleNum...原创 2019-08-01 18:25:47 · 384 阅读 · 0 评论 -
Java语言程序设计.基础篇 第六章 方法
下面附带一些第六章习题定义方法的语法如下所示:修饰符 返回值类型 方法名(参数列表 ){ // 方法体;}函数重载 重载函数是函数的一种特殊情况,为方便使用,Java允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处...原创 2019-07-29 08:52:24 · 520 阅读 · 0 评论 -
汉诺塔递归问题 Java语言描述
Java递归汉诺塔问题汉诺塔问题:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。在这里,我们开始的时候就只先看第一个柱子上只有3个盘子的情况。首先,如果我们要将这三个盘子从start柱子移动到to上,所以就...原创 2019-07-27 18:26:12 · 279 阅读 · 2 评论 -
Java语言程序设计 对象和类
为对象定义类:面向对象程序设计(OOP)就是使用对象进行程序设计。对象(object)代表现实世界中可以明确标识的一个实体。每个对象都有自己独特的标识、状态和行为。一个对象的狀态(state,也称为特征(property)或属性(attribute))是由具有当前值的数据域来表示的。例如:圆对象具有一个数据域 radius, 它是标识圆的属性。一个矩形对象具有数据域 width 和 hei...原创 2019-08-05 19:18:37 · 542 阅读 · 0 评论 -
Java语法基础02(Java语言程序设计.基础篇)
Java语法基础原创 2019-07-19 19:51:11 · 642 阅读 · 0 评论 -
Java语法基础01
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-07-19 18:10:19 · 174 阅读 · 0 评论 -
Java语言程序设计.基础篇 第五章 循环
for,while的应用- 最下面附上一些练习题while循环while 循环的语法如下:while(循环继缞条件){ // 循环体 语句(组); } 一些while循环,我们可以让他们成为一个“死循环”,如:while(true){}然后我们在循环体内可以进行while循环的退出。do-while循环do{ // 循环体;语句(组); } while(循环继...原创 2019-07-23 19:18:52 · 2033 阅读 · 0 评论 -
Java语言程序设计.基础篇 第三章 选择
Java语言程序设计.基础篇 第三章 选择下面附带第三章的一些习题单分支 if 语句是指当且仅当条件为 true 时执行一个动作,语句设计如下:if(布尔表达式){语句(组)}双分支if-else语句:if (布尔表达式){布尔表达式为其时执行的语句(组);} else{布尔表达式为假时执行的语句(组);}switch语句基于变量或者表达式的值来执行语句:...原创 2019-07-23 17:59:42 · 2171 阅读 · 0 评论
分享