- 博客(22)
- 收藏
- 关注
原创 java设计模式之状态模式
设计模式之状态模式:核心思想是当对象的状态改变时 同时改变其行为 状态模式既可以通过改变状态来获得不同的行为 好友能看到你的变化 代码层面上说 需实体类持有状态类的一个实例(复杂一点的也可以通过互相持有对方的一个实例来实现)public class State { private String value; public String getValue() { r...
2018-11-23 22:06:09 192
原创 java设计模式之模板方法模式
模板方法模式 和策略模式类似 通过抽象类定义一个抽象方法和非抽象方法 子类继承抽象类后实现抽象方法 通过改变抽象类的引入来改变调用的方法 将方法都放在抽象类中最好还是面向接口编程public abstract class AbstractCalculator { /*主方法,实现对本类其它方法的调用*/ public final int calculate(String exp, St...
2018-11-22 22:01:55 148
原创 java设计模式之策略模式
策略模式:一系列的算法 将每个算法封装起来 使他们可以相互替换 需要设计一个接口 为这个一系列实现类提供统一的方法 多个实现类实现该接口 设计一个抽象类 提供辅助函数 在使用的过程中可以适配改换算法interface ICalculator { int calcutor(String exp);}abstract class AbstractCalculator { ...
2018-11-22 21:52:14 187
原创 java设计模式之桥接模式
桥接模式 把事物和具体的实现分开 将抽象与实现化解耦 使得二者可以独立变化 对于很多统一对外的接口 习惯上会多封装一层便于理清抽象逻辑public class Bridge { private Sourceable sourceable; public void method() { sourceable.method(); } public Sourceable getSou...
2018-11-22 21:32:26 148
原创 java设计模式之外观模式
外观模式又被称为Facade模式,解决类之间的耦合,将所有的类的关系放置在一个Facade类中public class Facade { public static void main(String[]args){ Computer computer = new Computer(); computer.startUp(); computer.shutDown(); }}...
2018-11-21 21:39:36 158
原创 java设计模式之单例模式
单例模式:保持某个类一直只有一个实例化 能够节约资源 以下是较好的一种单例模式实例class Private { private Private() { } private static class PrivateBuilder { private static Private private1 = new Private(); } public static Priva...
2018-11-21 20:45:29 126
原创 java设计模式之静态工厂模式
工厂模式是常用的一种设计模式,静态工厂模式是其中比较常用的一种,不需要实例化便可以用统一的出口产生类。public class FactoryMethod { private FactoryMethod() { } public static Test create(int i) { switch (i) { case 1: return new Example1...
2018-11-21 20:29:04 216
原创 java设计模式之proxy代理模式
proxy代理模式 多一个代理类出来 替原对象完成一些功能public class Proxy implements Sourceable { private Source source; public Proxy() { super(); this.source = new Source(); } @Override public void method() { ...
2018-11-21 20:11:01 183
原创 java设计模式之装饰器模式
装饰器模式装饰器模式: 是给一些对象增加一些新的功能 并且是动态的 要求装饰对象和被装饰对象实现同一接口 装饰对象持有被装饰对象的实例public class Decorator implements Sourceable { private Sourceable sourceable; public Decorator(Sourceable sourceable) { supe...
2018-11-20 22:05:26 118
原创 java设计模式之适配器模式
适配器模式:是指通过适配器类,将原有的类能够适配给第三方使用 该模式是很多设计模式的基础类的适配器模式适配器模式是为了将某个类的接口转换成客户端期望的另一个接口表示public class ClassAdapter { public void method1() { System.out.println("原来的方法"); }}interface TargetAbl...
2018-11-19 22:06:27 151
原创 java常用排序算法之堆排序
JAVA常用排序算法之堆排序 算法的平均时间复杂度为O(n×log(n))实现的代码如下: package com.beibei.risk.sort;/** * desc:堆排序算法,使用大根堆 * Created by zhai on 2017/9/7. */public class HeadSort { public static void main(...
2018-11-08 20:37:59 178
原创 java常用排序之归并排序
JAVA常用排序算法之归并排序 具体的实现方式如下:算法的平均时间复杂度为O(n×log(n))。实现的代码如下: import java.util.ArrayList;import java.util.List;public class MergeSort { public static void main(String[] args) { ...
2018-11-08 20:36:56 142
原创 java常用排序之希尔排序
JAVA常用排序算法之希尔排序希尔排序是直接插入排序的一种改进,这是一种不稳定的算法。具体的实现方式如下:设定增量,让两个数字进行比较,然后调换位置。举个例子,32,15,78,24,22,78,11先设置增量为3,那么就是将32和24进行比较,32更大,调换位置。然后依次向后比较,将整个数组变成基本有序(就是大的数字基本在后面,小的数字基本在前面)。注意,最后一个增量一定要设置为1。...
2017-09-05 15:36:01 331
原创 小结 -2017-8-13
最近一段时间关于java编程思想的总结:1.使用接口技术的重要性,可以扩展,可以多重实现,软件的开闭原则,不能修改,可以添加扩展2.方法可以多,逻辑一定要清晰,逻辑太复杂可能是方法不太好,方法尽量干净,可以重复地使用4.代码量尽量少,逻辑要清晰,不能相同重复过长的代码表示一个意思5,,解决问题的思路很重要,每一行代码表示什么逻辑意思要清楚,当然解决问题的思路会因为一门语言的设计思想...
2017-08-13 00:34:28 305
原创 数据结构之二叉查找树
树,做为一种相对基础的数据结构,被广泛的应用于数据存储和查找中。一般来说,定义树是用递归的方式,树是一些节点的集合。集合可以是空的,也可以是非空。如果不是非空,那么就是由一个根节点和0个或者多个的非空节点的字树组成,子树都由一一条来自根节点的有向的边所连结。一颗树是N个节点和N-1条边的集合。没有子的节点被称为树叶。N1到Ni的路径定义为路径。根节点到Ni的唯一路径称为深度。Ni的高是指从它到...
2017-06-23 20:29:46 271
原创 JAVA常用排序算法之快速排序
JAVA常用排序算法之快速排序。快速排序是冒泡排序的一种改进,要求排序速度较快。同样,这也是一种不稳定的算法。具体的实现方式如下:首先设定一个初始值,然后进行比较,大于初始值的放在左边,小于初始值的放在右边,然后递归的进行左边和右边的比较。算法的平均时间复杂度为O(n×log2(n))。实现的代码如下: public class Demo6 { /** ...
2017-05-17 09:46:24 562
原创 JAVA常用排序算法之简单选择排序
JAVA常用排序算法之简单选择排序。常用于取序列最大与最小的几个数时,这是一种不稳定的排序算法。当i=1时,需要进行n-1次比较,当i=2时,需要进行n-2次比较,依次类推,共需要(n-1)+(n-2)+…+2+1=n(n-1)/2次比较,所以时间复杂度是O(N^2),进行移动操作的时间复杂度为O(N)。算法的步骤是:首先将第一个和后面的所有的数进行比较,将最小的放在前面。然后从第二个开始重...
2017-05-16 22:04:13 378
原创 JAVA常用查找之二分查找法
JAVA常用查找之二分查找法。具体的实现过程如下:将N个排序好的数据分成两个部分,如果要查找的数据大于中间的值,就在右边的数据中查找,反之则在左边的数据中查找。不断地重复上述过程,直到找到中间数据和需要查找的数据相等或者不等。第一次查找,索引为N/2,第二次为N/4,第三次为N/2^3,一直循环下去,直到N/2^k。因为N/2^k》=1,所以K<=log2N。时间复杂度为O(N)=log...
2017-05-16 16:39:57 508
原创 JAVA常用排序算法之冒泡排序
JAVA常用排序算法之冒泡排序。冒泡排序,顾名思义就是像气泡一样将大的数据一个一个地升上来。具体的思路如下:将相邻的两个元素进行比较,将大的往后排,第一遍之后最大的就在最后面。除了最后一个元素,再进行上述的比较,直到只剩一个元素为止。冒泡排序一般不使用,因为速度较慢。最好的情况下,只需要比较N次,时间复杂度是O(N)。最坏的情况下,整个序列都是反序的,需要进行N-1次的循环,每次循环需...
2017-05-16 16:05:34 307
原创 JAVA常用排序算法之直接插入排序
在JAVA开发的过程中,排序算法是不可获取的一种重要的算法。本文将首先讨论一下直接选择排序。直接选择排序的思想是:将一组无序的数据一个一个的排序好,后一个数据插入已经有序排列的序列中。这样不断地循环比较、插入,最后所有的数据都会有序排列。该算法的时间复杂度为O(N^2)。改进:算法中引进了附加记录称为监视哨或者哨兵。 public class Demo1 {/*...
2017-05-16 12:47:38 443
原创 java中的继承-子类继承父类的权限问题
java中的继承 Java语言面向对象有三大特性:封装、继承、多态。其中的继承,描述了一种“is-a”的关系,可以理解为子集合和父集合。子类可以继承父类的方法、域、构造方法。但是,java中的变量都是有权限的,子类继承的时候要不要考虑呢?class A{ public int x=10; public static int y=20; public sta
2017-05-05 14:32:31 2512
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人